用 c++写一个桶排序
时间: 2023-08-04 12:35:42 浏览: 242
以下是用 C++ 实现桶排序的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
void BucketSort(vector<int>& nums) {
int n = nums.size();
if (n <= 1) {
return;
}
int max_val = nums[0];
for (int i = 1; i < n; i++) {
max_val = max(max_val, nums[i]);
}
vector<int> buckets(max_val + 1, 0);
for (int i = 0; i < n; i++) {
buckets[nums[i]]++;
}
int k = 0;
for (int i = 0; i <= max_val; i++) {
for (int j = 0; j < buckets[i]; j++) {
nums[k++] = i;
}
}
}
int main() {
vector<int> nums = {5, 2, 9, 4, 7, 6, 1, 3, 8};
BucketSort(nums);
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
```
桶排序的基本思想是将待排序数组中的元素根据某个规则分配到若干个桶中,每个桶内再分别进行排序,最后将各个桶中的元素按照顺序依次取出,就是排序好的结果。在这里,我们以元素值为桶的索引,统计每个元素值出现的次数,再按顺序输出每个元素值即可。
阅读全文