halisi7

一个专注技术的组织

0%

桶排序-c语言

算法说明:

  • 将需要排的数放入一维数组a[11]。//此一维数组即为桶。

​ 若a[i]=0,则表示无数据

​ 若a[i]=1,则表示有数据,且数据的数量是1。

img

  • 循环输出a[i],若a[i]!=0,则输出若干次,直到a[i]=0 。

复杂度分析:

  • 是桶排序的时间复杂度,为 O(N+M)。

代码部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main()
{
int a[11], i, j, t;
for ( i = 0; i <= 10; i++)
{
a[i] = 0;//数组初始化
}
for ( i = 1; i <= 5; i++)//循环读入5个数
{
scanf_s("%d", &t);//获取输入
a[t]++;//数组计数
}
for (i = 0; i <= 10; i++)//从a[0]~a[10]逐个输出
for (j = 1; j <= a[i]; j++)// 0表示不输出
printf("%d", i);
getchar(); getchar();//暂停程序,查看输出内容
//也可用system("pause");代替
return 0;
}

输入:

1
5 2 5 3 8

输出:

1
23558

总结:

  • 这是一个非常快的排序算法。//时间复杂度低。
  • 但是空间复杂度非常高。
打赏一下作者~ ฅ( ̳• ◡ • ̳)ฅ