[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 新增關於穩定性分類和複雜度歸類對比。交換 插入類排序 常常比較冒泡和快排之間的差...