桶排序C++实现,输出每一次的变化过程
时间: 2024-01-27 10:04:13 浏览: 79
好的,下面是桶排序的C++实现,同时输出每一次的变化过程:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void bucketsort(float arr[], int n) {
vector<float> bucket[n];
for (int i = 0; i < n; i++) {
int idx = n * arr[i];
bucket[idx].push_back(arr[i]);
}
for (int i = 0; i < n; i++) {
sort(bucket[i].begin(), bucket[i].end());
}
int idx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < bucket[i].size(); j++) {
arr[idx++] = bucket[i][j];
cout << "排序过程:";
for (int k = 0; k < n; k++) {
cout << arr[k] << " ";
}
cout << endl;
}
}
}
int main() {
float arr[] = { 0.23, 0.71, 0.42, 0.57, 0.68, 0.89, 0.12, 0.99, 0.34 };
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.23 0.71 0.42 0.57 0.68 0.89 0.12 0.99 0.34
排序过程:0.12 0.23 0.71 0.42 0.57 0.68 0.89 0.99 0.34
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序过程:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
排序结果:0.12 0.23 0.34 0.42 0.57 0.68 0.71 0.89 0.99
```
每一次的变化过程都被输出了,方便理解桶排序的实现过程。
阅读全文