冒泡排序法

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:39:54
冒泡排序法的比较方式

以数组中的10个数从小到大升序排序为例.

第一个程序,大家都会的:

main()
{
int a[10];
int i,j;
for(i=0;i<10;i++)a[i]=9-i;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("\n%d",a[i]);
}

第二个程序,内循环次数减小了:

main()
{
int a[10];
int i,j;
for(i=0;i<10;i++)a[i]=9-i;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("\n%d",a[i]);
}

第三个程序,内循环次数再一次减少:

main()
{
int a[10];
int i,j,p;
for(i=0;i<10;i++)a[i]=9-i;
for(i=9;i>0;i=p)
for(j=p=0;j<i;j++)
if(a[j]>a[j+1])
{