请给出用C++写桶排序的示例代码,并做好注释
时间: 2024-04-09 14:27:50 浏览: 100
当然可以!以下是使用C++和vector实现桶排序的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 桶排序函数
void bucketSort(vector<float>& arr) {
int size = arr.size();
// 创建桶并初始化为空
vector<vector<float>> buckets(size);
// 将元素分配到对应的桶中
for (int i = 0; i < size; i++) {
int bucketIndex = size * arr[i];
buckets[bucketIndex].push_back(arr[i]);
}
// 对每个桶中的元素进行排序
for (int i = 0; i < size; i++) {
sort(buckets[i].begin(), buckets[i].end());
}
int index = 0;
// 将排序后的元素从桶中取出放入原始数组
for (int i = 0; i < size; i++) {
for (int j = 0; j < buckets[i].size(); j++) {
arr[index++] = buckets[i][j];
}
}
}
// 测试桶排序算法
int main() {
vector<float> arr = {0.42, 0.32, 0.89, 0.78, 0.55, 0.11, 0.23};
cout << "原始数组:";
for (float num : arr) {
cout << num << " ";
}
bucketSort(arr);
cout << "\n排序后的数组:";
for (float num : arr) {
cout << num << " ";
}
return 0;
}
```
以上代码中,`bucketSort`函数用于实现桶排序算法。它首先创建一个桶的数组,并将其初始化为空。然后,根据元素的大小将元素分配到对应的桶中。接下来,对每个桶中的元素进行排序。最后,将排序后的元素从桶中取出放入原始数组中。
在`main`函数中,我们创建了一个测试数组,并调用`bucketSort`函数对其进行排序。最后,打印原始数组和排序后的数组。
希望这个示例能够帮助到你!如果有任何疑问,请随时提问。
阅读全文