#每次將乙個待排元素按照其大小排到合適的位置
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.簡單氣泡排...
各種排序演算法小結和實現
各種排序演算法想必大家都不陌生,定義我就不多介紹了,直接寫下自己的一些小結。快速排序 可以算的上應用最廣的排序演算法。其排序思路是隨機選取乙個數字作為標誌,使得小於它的數在它左邊,大於它的數在它的右邊,然後遞迴對兩邊的資料排序。歸併排序 應用分之的思想,先將要排序的分為兩列,然後分別進行排序,然後合...