相比起选择排序、冒泡排序等等,应该有很多人不太熟悉桶排序吧(至少我是这样),那就让我们一起来学习桶排序算法吧!
接下来,我以一道例题来说明什么是桶排序吧!
已知有排序数:4、2、7、6、4、3、9、1、5,将上述排序数进行升序排列。
思路:
我们可以借助一个一维数组来解决这个问题。首先,我们申请一个大小为10的一维数组array[10],并将其初始化为0。接着,我们开始输入排序数,将排序数与数组元素的下标对应起来,依次使对应的数组元素值加1。最后,依次打印数组元素值大于1的元素下标,且元素值是多少就打印多少次。
完整的源代码如下:
const int N = 11;
void SortBook()
{
int book[N] = {0};
int n = 0;
int num = 0;
printf("请输入存储数的个数: ");
scanf("%d", &n);
printf("\n");
printf("请输入存储数: ");
for(int i=0; i<n; ++i) //循环读入n个数
{
scanf("%d", &num); //把每个数读到存储数中
++book[num]; //记录每个存储数的个数
}
printf("打印已排好的存储数存储数: ");
for(int i=0; i<N; ++i)
{
for(int j=0; j<book[i]; ++j)
{
printf("%d ", i);
}
}
printf("\n");
}