日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python学习笔记19(算法)

發(fā)布時(shí)間:2023/11/29 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习笔记19(算法) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.二分查找

只能用二分查找查找有序列表

def bin_search(data,val): #data為被查找的列表,val是要查找的值low = 0high = len(data) - 1while low <= high:mid = (low+high)//2if data[mid] == val:return mid #找到了,返回val所在的索引elif data[mid] < val:low = mid + 1else:high = mid - 1return #未找到,返回None 二分查找

2.冒泡排序

def bubble_sort(data): #data傳需要排序的列表for i in range(len(data)-1):FLAG = 0for j in range(len(data)-i-1):if data[j] > data[j+1]:data[j],data[j+1] = data[j+1],data[j]FLAG = 1if FLAG == 0:break 冒泡排序

3.選擇排序

def select_sort(data):for i in range(len(data)-1):min = ifor j in range(i+1,len(data)):if data[j] < data[min]:min = jdata[i],data[min] = data[min],data[i] 選擇排序

4.插入排序

def insert_sort(data):for i in range(1,len(data)):tmp = data[i]j = i - 1while j >= 0 and data[j] > tmp:data[j+1] = data[j]j = j - 1data[j + 1] = tmp 插入排序

5.快速排序

def quick_sort(data,left,right):if left < right:mid = partition(data,left,right)quick_sort(data,left,mid - 1)quick_sort(data,mid + 1,right)def partition(data,left,right):tmp = data[left]while left < right:while left < right and data[right] >= tmp:right -= 1data[left] = data[right]while left < right and data[left] <= tmp:left += 1data[right] = data[left]data[left] = tmpreturn left 快速排序

?6.堆排序

def sift(data,low,high):i = lowj = 2 * i +1tmp = data[i]while j <= high:if j + 1 <= high and data[j] < data[j+1]:j += 1if data[j] > tmp:data[i] = data[j]i = jj = 2 * i + 1else:breakdata[i] = tmpdef heap_sort(data):n = len(data)for i in range(n // 2 - 1 ,-1 ,-1):sift(data,i,n-1)for i in range(n-1,-1,-1):data[0],data[i] = data[i],data[0]sift(data,0,i-1) 堆排序

7.歸并排序

def merge(data,low,mid,high):i = lowj = mid+1tmp = []while i <= mid and j <= high:if data[i] < data[j]:tmp.append(data[i])i += 1else:tmp.append(data[j])j += 1while i <= mid:tmp.append(data[i])i += 1while j <= high:tmp.append(data[j])j += 1data[low:high+1] = tmpdef mergesort(data,low,high):if low < high:mid = (low+high)//2mergesort(data,low,mid)mergesort(data,mid+1,high)merge(data,low,mid,high) 歸并排序

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/zy516563199/p/7453605.html

總結(jié)

以上是生活随笔為你收集整理的Python学习笔记19(算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。