您的位置:首页 > 编程语言 > C语言/C++

C语言排序法(选择排序法/冒泡排序法)

2016-03-31 10:42 225 查看
选择排序法

#include<stdio.h>

void main()

{

int i,j,k,temp,a[10];

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for (i=0;i<10;i++)

{

k=i;             //保存i的值,用k来进行循环排序

for(j=i+1;j<10;j++) //将第i个元素后面的元素与第i个元素进行比较

if(a[k]<a[j])//如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面

k=j;    //记录最大的位置

temp=a[k];//内循环结束后,交换两个标号下的元素的值

a[k]=a[i];

a[i]=temp;

}

for(i=0;i<10;i++)

printf("%d",a[i]);

}

选择排序法的优点是速度快,比较出最大(最小)的数字后才交换顺序。若内循环做完并未发现最大(最小)数,则自身交换,故交换次数为外循环循环次数。

冒泡排序法

#include<stdio.h>

void main()

{

inti,j,k,temp,a[10];

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++)

{

if(a[i]<a[j])

{

temp=a[i];  //如果后面的数大于前面的数,交换数据。 内循环完成后a[0]存的数字是最大的。

a[i]=a[j];

a[j]=temp;

}

}

}

for(i=0;i<10;i++)

printf("%d",a[i]);

}

冒泡排序法优点是程序简单,但是较繁琐,运行较慢,因为每次比较完最小(最大),内循环就要完成一次交换。

综上所述,建议使用选择排序法。另外两种排序法for语句条件都是一样的。选择排序法外循环交换,内循环记录最小(最大)位置。冒泡排序法则在内循环完成交换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: