1 /**
2 * 排序算法之桶排序
3 */
4 //需要知道要排序的数组中的最大值及最小值,来设置桶的大小,适合数值分布均匀的数组排序。
5 #include <iostream>
6 #include <vector>
7 using namespace std;
8
9 void bucketSort(vector<int>& vec) {
10 int len = vec.size();
11 vector<int> bucket(len + 1, 0); //将桶的大小设置为vec的大小,这样是不正确的,
12 //正常应该是根据最大值与最小值进行设置bucket的大小
13 for (int i = 0; i < len; ++i) {
14 bucket[vec[i]]++;
15 }
16 int k = 0;
17 for (int i = 0; i < len + 1; i++) {
18 if (bucket[i] != 0) {
19 vec[k++] = i;
20 }
21 }
22 }
23
24 int main() {
25 vector<int> vec = {2,1,3,5,4};
26 bucketSort(vec);
27 for (auto x : vec) {
28 cout << x << endl;
29 }
30 return 0;
31 }