deflinear_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為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...