插入排序
void f(int n)//n指字符串长度
{
int i,j,key;
for(i=2;i<=n;i++){//a[i]从第二个数开始遍历
key=a[i];//将当前的数记为key并拿出
j=i-1;//a[j]指a[i]的前一个数
while(j>0&&(a[j]>key)){//将key与a[i]左边的数一一比较大小至最左端
a[j+1]=a[j];//若key比a[j]大则把a[j]前移
j--;//a[j]左移
}
a[j+1]=key;//最后将key插入数列
}
}
冒泡排序
void f(int n)
{
int i,j,t;
for(i=1;i<=n-1;i++){//n个数排序,只用进行n-1趟
for(j=1;j<=n-i;j++){//从第1位开始比较直到最后一个尚未归位的数
if(a[j]<a[j+1]){//比较大小并交换,使该数浮到正确的位置
t=a[j]; a[j]=a[j+1]; a[j+1]=t;
}
}
}
}
桶排序
#include <stdio.h>
int book[1001]//每一个book[i]代表一个桶
int main()
{
int i,j,t,n;
scanf("%d",&n);//输入一个数n,表示接下来有n个数
for(i=1;i<=n;i++){
scanf("%d",&t); //把每一个数放入book[t]中
book[t]++; //进行计数
}
for(i=1000;i>=0;i--){ //依次遍历编号1000到0的桶
for(j=1;j<=book[i];j++){ //出现了几次就将桶的编号打印几次
printf("%d ",i);
}
}
return 0;
}