a=[8,2,7,5,1,9,6,4,3]
point=1
dk=len(a)
while
true:
dk=dk//2
for n in range(dk):
point=dk+n
while point index=-1
for i in range(n,point,dk):
if temp < a[i]:
index=i
break;
ifindex != -1:
for i in reversed(range(index,point,dk)):
a[i+dk]=a[i]
a[index]=temp
point +=dk
if dk ==1:
break
print(a)
a=[5,2,7,4,3,6,8,0,1,9]
for i in range(len(a)-1):
min=0
for s in range(len(a)-1-i):
ifa[min] > a[s+1]:
min=s+1
ifa[min] != a[len(a)-1-i]:
temp=a[min]
a[min]=a[len(a)-i-1]
a[len(a)-1-i]=temp
print(a)
快速排序(ps:快速排序是對氣泡排序的公升級, 快速排序更適合與對隨機數的排序)
[python] view plain copy
a=[9,2,7,4,3,6,5,8,1]
defquickscore
(a,start,end):
temp=a[start]
for i in range(start+1,end):
if temp > a[i] :
temp2=a[i]
for n in reversed(range(start,i)):
a[n+1]=a[n]
a[start]=temp2
index=a.index(temp)
if index - start > 1 :
quickscore(a,start,index)
if end-1 - index > 1 :
quickscore(a,index+1,end)
quickscore(a,0,9)
print(a)
3.1插入排序–直接插入排序
編寫思想以及步驟如下:
if
index != -1:
for i in reversed(range(index,point)):
a[i+1]=a[i]
a[index]=point
point+=1
print(a)
[python] view plain copy
a=[9,2,7,4,3,6,5,8,1]
bijiao=0
jiaohuan=0
point=1
while pointindex=-1
for i in range(point):
bijiao+=1
if tempindex=i
break
ifindex !=-1:
for i in reversed(range(index,point)):
a[i+1]=a[i]
jiaohuan+=1
a[index]=temp
point+=1
print(a)
print('比較次數:'+str(bijiao))
print('交換次數:'+str(jiaohuan))
堆排序演算法之python3實現
堆排序 向下調整的函式,傳入的資料為堆,堆頂節點的編號和堆末尾的界限值 defheapify heap,start,end father start son father 2 son儲存較大的子節點的編號,初始化為左子節點 while end son 當目前資料所處的節點還有子節點時,繼續迴圈調整 ...
Python3 氣泡排序
參考 菜鳥教程 氣泡排序 bubble sort 重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。一輪一輪,直到無需再交換。例 小朋友按身高排序,兩兩比較,矮個子站前面 a 0.9m b 0.8m c 1.1m d 0.75m e 1.24m a b c d e b ...
python3氣泡排序
氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。a 99...