/******桶排序******/
/*将 0~N-1 范围区间的数 组成的数组进行排列*/
#include<stdio.h>
#define N 1000
void bucketSort(int *arr, const int size)
{
int tmparr[N] = {0};
for (int i = 0; i < size; i++)
{
tmparr[arr[i]]++;
}
int index = 0; //直接在原数组上进行修改, index累加
for (int i = 0; i < N; i++)
{
if (tmparr[i])
{
int tmpnum = tmparr[i]; //tmparr[i] 中保存了 arr数组中 i 出现的次数
while (tmpnum)
{
arr[index] = i;
index++;
tmpnum--;
}
}
continue;
}
}
void main()
{
int arr[10] = { 100, 199, 23, 45, 98, 32, 44, 589, 100, 75 };
bucketSort(arr, 10);
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
getchar();
}
输出:
23 32 44 45 75 98 100 100 199 589