排序演算法 python3

2021-08-02 16:59:42 字數 2022 閱讀 1179

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...