1.冒泡排序
(升序)相邻的两个数相互比较,如果前面的数大于后面的数则交换顺序。
#include<stdio.h>
void main()
{
int buf[20]={1,12,11,3,7,8,9,5,15,6};
int i,j,k;
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{
if(buf[j]>buf[j+1])
{
buf[j]+=buf[j+1];
buf[j+1]=buf[j]-buf[j+1];
buf[j]-=buf[j+1];
}
}
}
for(k=0;k<10;k++)
printf("%d ",buf[k]);
printf("\n");
}
2.插入排序
(升序)从未排序的数列中依次将每一个数在已排序的数列中找到位置,将该位置之后的每个数依次后移一位,再将该数放到已排序的数列中。
#include<stdio.h>
void main()
{
int buf[10]={2,3,5,1,4,6,9,8,7,0};
int i,j,temp;
for(i=1;i<10;i++)
{
temp=buf[i];
if(buf[i]<buf[i-1])
{
j=i;
while(j>0&&temp<buf[j-1])
{
buf[j]=buf[j-1];
j--;
}
buf[j]=temp;
}
}
for(i=0;i<10;i++)
printf("%d ",buf[i]);
printf("\n");
}
3.选择排序
(升序)从未排序的数列中找到最大值依次与后面的数对应的位置交换。
#include<stdio.h>
void main()
{
int buf[10]={1,3,5,2,6,7,4,8,9,0};
int i,j,listen;
for(i=0;i<10-1;i++)
{
for(j=1,listen=0;j<10-i;j++)
{
if(buf[j]>buf[listen])
listen=j;
}
if(listen!=j-1)
{
buf[listen]+=buf[j-1];
buf[j-1]=buf[listen]-buf[j-1];
buf[listen]-=buf[j-1];
}
}
for(i=0;i<10;i++)
printf("%d ",buf[i]);
printf("\n");
}