桶排序步骤及c++代码
时间: 2023-08-07 20:56:05 浏览: 111
桶排序 c++
桶排序是一种线性时间复杂度的排序算法,适用于一定范围内的浮点数排序。下面是桶排序的步骤及C++代码示例:
步骤:
1. 创建一个固定大小的桶数组,每个桶存储一定范围内的元素。
2. 遍历待排序数组,将每个元素分配到对应的桶中。
3. 对每个桶中的元素进行排序,可以使用其他排序算法,也可以递归使用桶排序。
4. 将各个桶中的元素按顺序合并到待排序数组中。
C++代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void bucketSort(float arr[], int n) {
// 创建桶数组
vector<float> buckets[n];
// 将元素分配到对应的桶中
for (int i = 0; i < n; i++) {
int index = n * arr[i];
buckets[index].push_back(arr[i]);
}
// 对每个桶中的元素进行排序
for (int i = 0; i < n; i++) {
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() {
float arr[] = {0.42, 0.32, 0.78, 0.62, 0.91, 0.16};
int n = sizeof(arr) / sizeof(arr[0]);
bucketSort(arr, n);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码实现了桶排序算法,对给定的浮点数数组进行排序。运行后输出排序后的数组:0.16 0.32 0.42 0.62 0.78 0.91。
阅读全文