桶排序算法的C++代码
时间: 2023-11-23 07:07:52 浏览: 91
以下是桶排序算法的C代码:
```c
#include <stdio.h>
#define MAX 1000 // 假设待排序数据最大值为1000
void bucketSort(int[], int); // 桶排序函数
void bucketSort(int arr[], int n) {
int i, j;
int count[MAX]; // 计数器数组
// 初始化计数器数组为0
for(i = 0; i < MAX; i++) {
count[i] = 0;
}
// 将待排序数据存入计数器数组对应的位置
for(i = 0; i < n; i++) {
count[arr[i]]++;
}
// 将计数器数组转化为有序序列
for(i = 0, j = 0; i < MAX; i++) {
while(count[i] > 0) {
arr[j++] = i;
count[i]--;
}
}
}
int main() {
int arr[] = {8, 2, 3, 4, 3, 6, 6, 3, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
bucketSort(arr, n);
printf("排序后的数组为:\n");
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
桶排序的时间复杂度为O(n),其中n为待排序数据的个数。由于桶排序的空间复杂度较高,因此只适用于数据范围较小的情况。
阅读全文