桶排序

桶排序

 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 }