氣泡排序 選擇排序 插入排序

2022-09-11 23:27:32 字數 1839 閱讀 2795

def

linear_search(li, target):

"""線性查詢

"""for ind, tar in

enumerate(li):

if tar ==target:

return

ind

else

:

return

none

defbinary_search(li, target):

"""二分查詢,注意mid+-1,既提高速度,又與while的=相照應,才能找到列表最後乙個值

:param li:列表

:param target:要查詢的元素

:return: 目標元素的下標

"""low =0

high = len(li) - 1

while low <=high:

print("

low = %s, high = %s

" %(low, high))

sleep(5)

mid = (low + high) // 2

if li[mid] ==target:

return

mid

elif li[mid] >target:

high = mid - 1

else

: low = mid + 1

else

:

return

none

defbubble_sort(li):

"""氣泡排序,change加入:若兩次遍歷無交換,則數列已經有序,故提前結束

:param li:

:return:

"""for i in range(len(li) - 1):

change =none

for j in range(len(li) - i - 1):

if li[j] < li[j + 1]:

li[j], li[j + 1] = li[j + 1], li[j]

change =true

ifnot

change:

break

defselect_sort_******(li):

"""選擇排序,簡單模式 缺點:需要兩個列表,所佔空間加倍

:param li:

:return:

"""li_tar =

for i in

range(len(li)):

tmp =min(li)

li.remove(tmp)

return

li_tar

defselect_sort(li):

"""選擇排序,在乙個數列中進行

:param li:

:return:

"""for i in range(len(li) - 1):

min_loc =i

for j in range(i + 1, len(li)):

if li[j] li[j], li[min_loc] =li[min_loc], li[j]

definsert_sort(li):

"""插入排序

:param li:

:return:

"""for i in range(1, len(li)):

tmp =li[i]

j = i - 1

while j >= 0 and li[j] >tmp:

li[j+1] =li[j]

j = j - 1li[j+1] = tmp

氣泡排序,選擇排序,插入排序

氣泡排序,選擇排序,插入排序 小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。1 氣泡排序 packagedatastrut public classbubblesort public voidinsert longvalue...

選擇排序 , 插入排序 , 氣泡排序

編寫 include void println int array,int len 列印給定長度的陣列 printf n void swap int array,int i,int j 交換陣列中兩個位置的元素 void selectionsort int array,int len o n n 對...

氣泡排序 插入排序 選擇排序

氣泡排序是每輪比較未排序部分,從第乙個元素開始找最值,比較相鄰數字,依次往後推移,最終將最值置於最右。假設有n個數,外迴圈迴圈n 1遍,內迴圈是n 1在減去當前是第幾次外迴圈。void bubble sort mytype a,int n n為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...