排序演算法小結 python 實現

2021-08-04 10:33:15 字數 1916 閱讀 9648

#每次將乙個待排元素按照其大小排到合適的位置

definsertsort

(value):

n = len(value)

for i in range(1,n):

temp = value[i]

#print(temp)

j = i-1

while j >= 0

and temp < value[j]:

value[j+1] = value[j]

j -= 1

value[j+1] = temp

return value

print(insertsort(l))

#每趟比較出最大的放最後

defbubblesort

(value):

n = len(value)

flag = 0

for i in range(n):

for j in range(n-i-1):

if value[j] > value[j+1]:

value[j+1], value[j] = value[j], value[j+1]

flag = 1

if flag == 0:

break

return value

print(bubblesort(l))

#每次將軸放到合適的位置

defquicksort

(value,l,r):

i,j = l,r

if lwhile i != j:

while iand value[j]>temp:

j -= 1

if i1

while iand value[i]1

if i1

value[i] = temp

quicksort(value,l,i-1)

quicksort(value,i+1,r)

quicksort(l,0,len(l)-1)

print(l)

#每次選最小的

defselectsort

(value):

l = len(value)

for i in range(l):

temp = value[i]

k = i

for j in range(i+1,l):

if value[j]return value

print(selectsort(l))

#建堆,注意下標

defadjust_heap

(value,i,n):

l = 2*i

r = 2*i+1

max = i

if l<=n:

if value[l]>value[i]:

max = l

if r<=n and value[r]>value[max]:

max = r

if max != i:

value[max],value[i] = value[i],value[max]

adjust_heap(value,max,n)

defheap_sort

(value):

n = len(value)-1

for i in range(n/2,0,-1):

adjust_heap(value,i,n)

for j in range(n,1,-1):

value[1],value[j] = value[j],value[1]

adjust_heap(value,1,j-1)

return value

print(heap_sort(l))

排序演算法小結 C 實現

include include 排序演算法的穩定性 對於相同的關鍵字,排序之前的位置和排序之後的位置相同,則稱為穩定排序,否則不穩定排序。歸併排序 基本思想為 先分解再合併,在合併的過程中進行排序 穩定排序 平均時間複雜度為 o nlogn 最好時間複雜度o nlogn 最好時間複雜度o nlogn...

排序演算法小結(C 實現)

前言 在這裡總結一下各種排序方式以增強理解和之後複習方便,附帶一些優化方式 目錄 非線性時間 1.比較 1氣泡排序 2快速排序 2.插入 1插入排序 2希爾排序 3.選擇 1選擇排序 2堆排序 4.歸併 1二路歸併 2多路歸併 線性o n 1.計數排序 2.堆排序 3.基數排序 正文 1.簡單氣泡排...

各種排序演算法小結和實現

各種排序演算法想必大家都不陌生,定義我就不多介紹了,直接寫下自己的一些小結。快速排序 可以算的上應用最廣的排序演算法。其排序思路是隨機選取乙個數字作為標誌,使得小於它的數在它左邊,大於它的數在它的右邊,然後遞迴對兩邊的資料排序。歸併排序 應用分之的思想,先將要排序的分為兩列,然後分別進行排序,然後合...