桶排序
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 }