请写一个桶排序的c++代码
时间: 2024-04-22 16:28:11 浏览: 89
当然,这是一个简单的桶排序的C++代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 桶排序函数
void bucketSort(std::vector<int>& arr) {
int max_val = *std::max_element(arr.begin(), arr.end()); // 找到数组中的最大值
int min_val = *std::min_element(arr.begin(), arr.end()); // 找到数组中的最小值
int bucket_size = max_val - min_val + 1; // 桶的大小
std::vector<int> bucket(bucket_size, 0); // 创建桶并初始化为0
for (int i = 0; i < arr.size(); i++) {
bucket[arr[i] - min_val]++; // 将元素放入对应的桶中
}
int index = 0;
for (int i = 0; i < bucket_size; i++) {
while (bucket[i] > 0) {
arr[index++] = i + min_val; // 从桶中取出元素并放回原数组中
bucket[i]--;
}
}
}
// 测试桶排序
int main() {
std::vector<int> arr = {5, 2, 8, 9, 1, 3};
std::cout << "原数组: ";
for (int num : arr) {
std::cout << num << " ";
}
bucketSort(arr);
std::cout << "\n排序后的数组: ";
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}
```
这段代码实现了一个简单的桶排序算法,通过将元素分配到不同的桶中,然后对每个桶进行排序,并将排序后的元素放回原数组中。最后输出排序后的数组。注意,这只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改。
阅读全文