桶排序使用c++代码怎么算
时间: 2023-08-20 11:50:55 浏览: 82
桶排序是一种基于区间划分的排序算法,以下是使用C++实现桶排序的代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
void bucketSort(std::vector<float>& arr) {
int n = arr.size();
// 创建桶并初始化为空
std::vector<std::vector<float>> buckets(n);
// 将元素分配到不同的桶中
for (int i = 0; i < n; i++) {
int bucketIndex = n * arr[i];
buckets[bucketIndex].push_back(arr[i]);
}
// 对每个非空桶中的元素进行排序
for (int i = 0; i < n; i++) {
if (!buckets[i].empty()) {
std::sort(buckets[i].begin(), buckets[i].end());
}
}
// 将桶中的元素按顺序放回原数组
int index = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < buckets[i].size(); j++) {
arr[index++] = buckets[i][j];
}
}
}
int main() {
std::vector<float> arr = {0.8, 0.4, 0.6, 0.2, 0.9, 0.5};
std::cout << "Original array: ";
for (float num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
bucketSort(arr);
std::cout << "Sorted array: ";
for (float num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先创建了一个桶的数组,然后遍历待排序的数组,将每个元素根据其值分配到对应的桶中。接着对每个非空桶中的元素进行排序,最后将桶中的元素按顺序放回原数组。运行上述代码,可以得到排序后的数组。
阅读全文