区别:为什么说选择排序的效率比冒泡排序的要高?
看下面的代码可以看出:使用冒泡排序时,比较一次交换一次值。但是选择排序比较一次,只在逻辑上交换下标,等一趟排完再决定是否交换物理上的值。
/*
5--3: 输入3个任意的数,num1,num2,num3,按从小到大的顺序排序输出。
*/
#include<stdio.h>
void main()
{
int num1,num2,num3;
int i,j,k,m;
printf("num1,num2,num3 = ");
scanf("%d%d%d",&num1,&num2,&num3);
int a[3]={num1,num2,num3};
//冒泡排序
for(i=0;i<2;i++)
{
m =0;
for(j=0;j<2;j++)
{
if(a[j]>a[j+1])
{
m=1;
k =a[j];
a[j] = a[j+1];
a[j+1] = k;
}
}
if(m!=1)
break;
}
printf("输出从小到大的顺序: ");
for(i=0;i<3;i++)
printf("%d\t",a[i]);
//选择排序
for(i=0;i<2;i++)
{
k=i;
for(j=k+1;j<3;j++)
if(a[k]>a[j])
k=j;
if(i!=k)
{
m = a[k];
a[k] = a[i];
a[i] = m;
}
}
printf("输出从小到大的顺序: ");
for(i=0;i<3;i++)
printf("%d\t",a[i]);
}