八大排序c 可執行精簡版,一目了然

2021-06-18 14:24:56 字數 2868 閱讀 7686

[cpp]view plain

copy

#include 

using

namespace

std;  

// 插入排序開始********************=

void

insert_sort(

inta, 

intn)  

a[j+1] = t;  

}  }  

// 插入排序結束********************=

// 選擇排序開始********************=

void

select_sort(

inta, 

intn)  

}  // 選擇排序結束********************=

// 氣泡排序開始********************=

void

buble_sort(

inta, 

intn)  

if(noswap) 

break

;  }  

}  // 氣泡排序結束********************=

// 快速排序開始********************=

intquick_sort_partion(

inta, 

intp, 

intq)  

swap(a[++i], a[q]);  

return

i;  

}  void

quick_sort_helper(

inta, 

intb, 

inte)  

}  void

quick_sort(

inta, 

intn)  

// 快速排序結束********************=

// 歸併排序開始********************=

void

merge_sort_helper(

inta, 

intcopy, 

intb, 

inte)  

while

(i <= mid)  

a[k++] = copy[i++];  

while

(j <= e)  

a[k++] = copy[j++];  

}  }  

void

merge_sort(

inta, 

intn)  

// 歸併排序結束********************=

// 堆排序開始********************===

void

heap_sort_adjust(

inta, 

intn, 

inti)  

}  void

heap_sort_build(

inta, 

intn)  

void

heap_sort(

inta, 

intn)  

}  // 堆排序結束********************===

// 希爾排序開始********************=

void

shell_sort(

inta, 

intn)  

;  for

(int

k = 0; k 

a[min(j+d[k], n-1)] = t;  

}  }  

}  // 希爾排序結束********************=

// 基數排序開始********************=

//l表示關鍵碼的個數

void

radix_sort(

inta, 

intn, 

intl)  

delete

bucket;  

}  // 基數排序結束********************=

[cpp]view plain

copy

intmain()  

;  radix_sort(a, 10, 3);  

for(

inti = 0; i 

cout <

;  cout <

return

0;  

}  

最後,貼出幾大排序的平均時間複雜度和最壞時間複雜度,以供參考

關於排序的穩定性

穩定的排序有

插入排序:(每次插入都是從後往前,兩個數一樣的話不會交換位置)

氣泡排序:(每次冒上去的都是最小的,兩個數相同不會交換)

歸併排序:(如果兩個相等的數在同乙個區間,顯然後面的數不會跑到前面去,如果在不同的區間,後半個區間在歸併後顯然也是排在後面,可對照上面的**)

基數排序:(兩個數相同,如果從左到右掃瞄,那麼前面的數肯定先被扔進桶內,如果從右往左掃瞄,那麼先將右邊的數扔到桶的後面,上面排序過程即是如此)

如果記不住的話,那麼鬼插雞毛,還記得住啊?記住,鬼插雞毛很穩定哦,其他的都不穩定

鬼:歸併排序,插:插入排序,雞:基數排序,毛:氣泡排序

來,和我一起讀,鬼插雞毛很穩定,鬼插雞毛很穩定,鬼插雞毛很穩定……讀個99遍

關於時間複雜度,除了快速排序,其他排序的最低時間複雜度和最壞時間複雜度相同,因為逆序的陣列每次劃分都需要o(i)(i = n, n-1,...)的時間,所以快速排序最壞為o(n^2)

八大排序之一 氣泡排序

public static void bubblesort int array for int j 0 j array.length 1 i j 優化 我們加了乙個 boolean flag 用來減少無意義的比較 比如 假如需要公升序 但是 這個陣列已經預設排好序了,我們外層for就只要跑一圈就可以...

八大排序演算法的C 實現

include stdafx.h include include include include using namespace std void print vectornumv 輸出陣列 numv.at j 1 v return numv vectorselectionsort vectornu...

關於八大排序演算法(C )

本文針對leetcode912 排序陣列作乙個排序的總結 題目鏈結 本題最快使用桶排序,歸併排序也可以很快通過,所以這兩個排序方法強烈推薦。修改版本2020 7 5 新增一些易錯點和原理解釋。修改版本2020 8 16 新增關於穩定性分類和複雜度歸類對比。交換 插入類排序 常常比較冒泡和快排之間的差...