分类: C/C++
2008-05-27 11:21:11
一.起泡法排序
起泡法排序:掌握两个重点,(1)N个数排序需要进行N-1趟排序;(2)第J趟排序需进行N-J次比较(交换).
程序如下:定义一维数组,这里a[0]不用,存储a[1]...a[5]共5个元素,因此N为5.
#include
main()
{
int i,j,temp,a[6];
printf("\n input the number \n");
for(i=1;i<=5;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=4;j++)
for(i=1;i<=5-j;i++)
{
if(a[i]>a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
}
for(i=1;i<=5;i++)
printf("\n%d",a[i]);
}
上述程序中,第一个循环用于控制输入,第二个循环用于控制进行排序的趟数,第三个循环则用于每一趟排序中需进行比较交换的次数.
二.此排序算法原理:
每次将最首的元素与其它元素比较.
main()
{
int p,q,a[10],i,j,temp;
printf("input the number:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
p=i;
q=a[i];
for(j=i+1;j<10;j++)
if(q>a[j]) {p=j;q=a[j];}
if(i!=p)
{
temp=a[i];
a[i]=a[p];
a[p]=temp;
}
printf("%d",a[i]);
printf(",");
}
}