Python實現各種排序演算法 快速排序三種方法

2021-09-30 19:41:05 字數 1299 閱讀 3697

選乙個基數,把比這個數大的數放到這個數的左邊,比這個數小的放到這個數的右邊,然後在採用分治法對左右進行同樣的操作。

這個數最後所在的位置即為這個數在這組數中的大小排序。

分治法

def quicksort(ary,left,right):

if (left挖坑法

找乙個基數,然後從前面找小於基數的數去填這個坑,再從後往前找大於基數的數填剛形成的坑。

#挖坑法

def quickarray3(ary,left,right):

k=ary[right]#首先

print(ary)

i=left

j=right

while ik:

j-=1

ary[i]=ary[j]

ary[j]=k

return j

左右指標法

找乙個基數,前面找比這個數小的數,然後從後面找比這個數大的數,然後兩個數對調。

#左右指標

def quickarray2(ary,left,right):

i=left

j=right

print(left,right)

while i=ary[right]:

j-=1

ary[i],ary[j]=ary[j],ary[i]#然後兩者對換

print(ary)

ary[j],ary[right]=ary[right],ary[j]

print (ary[j])

return j

前後指標法

找乙個基數,兩個指標分別記錄當前位置cur和上乙個比基數大的數的位置pre,若當前位置比基數小,則換到前面

def quickarray(ary,left,right):

if leftk=ary[right]

cur=left

pre=cur-1

for cur in range (left,right):

if ary[cur]pre+=1

if pre!=cur:

ary[pre],ary[cur]=ary[cur],ary[pre]

ary[pre+1],ary[right]=ary[right],ary[pre+1]

print(ary)

return pre+1

用Python實現各種排序演算法

比較相鄰的元素大小,將小的前移,大的後移,就像水中的氣泡一樣,最小的元素經過幾次移動,會最終浮到水面上。def bubble list for i in range len list for j in range 0,len list 1 i if list j list j 1 list j li...

各種排序演算法的Python實現

最近剛剛接觸python,python語法簡潔清晰,具有很好的易讀性,編寫的演算法可以很容易的看出其本質。故而用python編寫演算法,既可以熟悉演算法,又可以練習python,何樂而不為呢?插入排序 def insertsort lists for i in range 0,len lists 1...

各種排序演算法實現

1 選擇排序 最壞情況 時間複雜度為o n 2 平均時間複雜度o n 2 最好情況 時間複雜度為o n 2 最差空間複雜度 需要輔助空間o 1 不是穩定排序 實現 void swap int a,int b void selectionsort int a,int n if k i swap a i...