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

选择排序法

#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语句条件都是一样的。选择排序法外循环交换,内循环记录最小(最大)位置。冒泡排序法则在内循环完成交换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值