桶排序非常快但占用内存大,以下代码为输入0~1000的数进行排序,数组多申请一个,防止溢出
#include <stdio.h>
int main(void)
{
int book[1001]={0},i,j,t,n;
scanf("%d",&n); //输入一个数字n,表示接下来有n个数
for(i=1;i<=n;i++)
{
scanf("%d",&t); //把每个数读入到变量t中
book[t]++; //进行计数,对编号为t的桶放入一个小旗子
}
for(i=1000;i>=0;i--) //依次判断编号1000~0的桶
for(j=1;j<=book[i];j++) //出现几次就将桶的编号打印几次
printf("%d",i);
getchar();getchar();
//这里getcher();用来暂停程序,以便检查程序输入的内容
return 0;
}
冒泡排序:
基本思想:每次比较相邻的两个元素,如果顺序错误就交换过来。
#include <stdio.h>
int main(void)
{
int a[100],i,j,t,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
//冒泡排序的核心部分
for(i=1;i<=n-1;i++) //n个数排序,只用进行n-1趟
{
for(j=1;j<=n-i;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=1;i<=n;i++)
printf("%d",a[i]);
return 0;
}