,主要有氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。
。在一定條件下,它們的時間複雜度可以達到o(n)。
需要三個陣列:
待排序陣列 int arr = new int;
輔助計數陣列 int help = new int[max - min + 1]; //該陣列大小為待排序陣列中的最大值減最小值+1
輸出陣列 int res = new int[arr.length];
1.求出待排序陣列的最大值max=4, 最小值min=1
2.例項化輔助計數陣列help,help陣列中每個下標對應arr中的乙個元素, help用來記錄每個元素出現的次數
3.計算 arr 中每個元素在help中的位置 position = arr[i] - min,此時 help = [1,0,2,2]; (4出現了兩次,2未出現)
4.根據 help 陣列求得排序後的陣列,此時 res = [1,3,3,4,4]
/**
* 分類 ------------ 內部非比較排序
* 資料結構 --------- 陣列
* 最差時間複雜度 ---- o(n + k)
* 最優時間複雜度 ---- o(n + k)
* 平均時間複雜度 ---- o(n + k)
* 所需輔助空間 ------ o(n + k)
* 穩定性 ----------- 穩定
*/public static int countsort(int arr)
int max = integer.min_value;
int min = integer.max_value;
//找出陣列中的最大最小值
for(int i = 0; i < arr.length; i++)
int help = new int[max];
//找出每個數字出現的次數
* 分類 ------------- 內部非比較排序
* 資料結構 ---------- 陣列
* 最差時間複雜度 ---- o(n * dn)
* 最優時間複雜度 ---- o(n * dn)
* 平均時間複雜度 ---- o(n * dn)
* 所需輔助空間 ------ o(n * dn)
* 穩定性 ----------- 穩定
*/public static void radixsort(int data, int radix, int d)
for (int j = 1; j < radix; j++)
// 按子關鍵字對指定的資料進行排序
* 分類 ------------- 內部非比較排序
* 資料結構 --------- 陣列
* 最差時間複雜度 ---- o(nlogn)或o(n^2),只有乙個桶,取決於桶內排序方式
* 最優時間複雜度 ---- o(n),每個元素佔乙個桶
* 平均時間複雜度 ---- o(n),保證各個桶內元素個數均勻即可
* 所需輔助空間 ------ o(n + bn)
* 穩定性 ----------- 穩定
*/public static void bucketsort(int arr)
//桶數
int bucketnum = (max - min) / arr.length + 1;
arraylist> bucketarr = new arraylist<>(bucketnum);
for(int i = 0; i < bucketnum; i++)
//將每個元素放入桶
for(int i = 0; i < arr.length; i++)
//對每個桶進行排序
for(int i = 0; i < bucketarr.size(); i++)
system.out.println(bucketarr.tostring());
}
refrence: 排序演算法總結2一非比較排序
目錄 一.計數排序 countingsort 二.基數排序 radixsort 二.桶排序 bucketsort 這篇文章中我們來 一下常用的非比較排序演算法 計數排序,基數排序,桶排序。在一定條件下,它們的時間複雜度可以達到o n 這裡我們用到的唯一資料結構就是陣列,當然我們也可以利用鍊錶來實現下...
非比較排序
以下內容參考自 演算法導論 基於比較的排序演算法可以用一顆完全二叉樹 決策樹 來表示,節點表示每一次的比較過程,葉子節點表示最終的排序順序,葉子節點一共有n 個 n表示資料個數,一共有n 種排列方式 二叉樹的高度h就是比較的次數,由二叉樹的性質,葉子節點的個數不大於2 h,所以有 2 h n 2 h...
非比較排序
計數排序 n個輸入元素的每乙個都是在0到k之間的整數 k為某個整數 1.假設輸入陣列是a 1.n 還需要兩個陣列 b 1.n 存放排序的輸出,c 0.k 提供臨時儲存空間 2.c i 中存放等於 i 的元素的個數,i 0,1,k 3.通過相加計算確定有多少元素是小於等於i的 4.把每個元素a i 放...