用C++写出桶式排序代码
时间: 2023-07-15 14:13:43 浏览: 98
下面是用 C++ 实现的桶式排序代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void bucketSort(vector<int>& arr, int bucketSize) {
if (arr.empty()) {
return;
}
int minValue = arr[0];
int maxValue = arr[0];
for (int i = 1; i < arr.size(); ++i) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
int bucketCount = (maxValue - minValue) / bucketSize + 1;
vector<vector<int>> buckets(bucketCount);
for (int i = 0; i < arr.size(); ++i) {
buckets[(arr[i] - minValue) / bucketSize].push_back(arr[i]);
}
arr.clear();
for (int i = 0; i < buckets.size(); ++i) {
sort(buckets[i].begin(), buckets[i].end());
for (int j = 0; j < buckets[i].size(); ++j) {
arr.push_back(buckets[i][j]);
}
}
}
int main() {
vector<int> arr = { 4, 3, 2, 1, 5, 7, 6, 8 };
bucketSort(arr, 2);
for (int i = 0; i < arr.size(); ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在上述代码中,我们首先找到输入数组中的最小值和最大值。然后,根据桶的大小,计算出桶的数量,并创建一个桶的向量。接着,将元素放入相应的桶中,最后将所有桶中的元素合并成一个有序数组。
阅读全文