二. 基數排序
三. 桶排序
桶排序的思想
【*】量大但範圍最小:既能用陣列下標表示(整數) 且 有很多是並列的
其他情況不一定比快速排序快。
總結:
#include using namespace std;
const int m = 50;
const int scope = 60;
void main()
} delete arr; arr = null;
delete count; count = null;
}
#include using namespace std;
const int m = 20;
/* 當未知資料範圍時:
遍歷:找出最大值、最小值、計算資料範圍個數
scopenum = max - min + 1
對映到->
*/void main()
cout << "max: " << max << " min: " << min << endl;
// 計算資料範圍 所需 陣列大小
int scopenum = max - min + 1;
// 建立計數陣列
int* count = new int[scopenum];
// 初始化計數陣列
for (int i = 0; i < scopenum; i++) count[i] = 0;
// 計數陣列 - 統計的時候減去偏移 (min)
for (int i = 0; i < m; i++) count[arr[i] - min] ++;
// 輸出資料 - 輸出的時候加上偏移 (min)
for (int i = 0; i < scopenum; i++)
} delete arr; arr = null;
delete count; count = null;
}
#include using namespace std;
const int m = 40;
const int scope = 20;
void main()
// 輸出排序後資料
for (int i = 0; i < m; i++) cout << result[i] << " ";
delete arr; arr = null;
delete result; result = null;
delete count; count = null;
}
穩定的排序
data : [123,43,4563]
有低位優先 and 高位優先:
字串的基數排序
#include using namespace std;/*
*/void main()
cout << "max val: " << max;
while ((max /= 10) > 0) length++;
cout << " max length: " << length << endl;
/* 基數排序:每個位的排序都是乙個計數排序
*/ // 除數
int div = 1;
/// 迴圈排序各個位
while(length-- > 0)
// 3. 累加 計數陣列
cout << "統計陣列:";
for (int i = 1; i < 10; i++) cout << endl;
// 4. 【排序】這裡倒著排,要把大的數放在大的位置上
for (int i = num-1; i >=0; i--)
cout << "排序結果:";
for (int i = 0; i < num; i++) cout << endl;
// 5. 將結果拷貝到原陣列,後面還要用 result 陣列
for (int i = 0; i < num; i++) arr[i] = result[i];
// 6. 更新迭代
div *= 10;
}}
缺點: 桶排序 基數排序 計數基數排序 Java
前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...
桶排序 基數排序 計數排序
桶排序 1.原理 將需要排序的陣列分在有限的桶裡 然後對每個桶中的數分別排序 對每個桶的操作 1.別的排序演算法 2.以遞迴的方式繼續使用桶排序 2.過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 將待排序的一組數,分檔規入這些子桶,並將桶中的資料進行排序 將...
排序 基數排序(計數排序 桶排序)
在此對於桶排序做出兩種方法 一.簡化版桶排序 如下 簡化版的桶排序 include int main scanf d n 輸入乙個數n,表示接下來有n個數 for i 1 i n i 迴圈讀入n個數,並進行桶排序 for i 0 i 1000 i 依次判斷編號1000 0的桶 getchar get...