c语言怎么排序,怎样用c语言来解决排序问题

好了,再来这样一道问题,我给你10个数,分别是0,1,2,3,4,5,6,7,8,9。然后我现在想让你倒序把他们输出来。

int i,a[10]={0,1,2,3,4,5,6,7,8,9};

for(i=9;i>=0;i--)

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

printf("\n");

现在给你5个数,然后让他们进行从小到大排序,你会怎么排??

其实我们有一种方法,叫选择法。

比如这样,1,5,4,2,6

这样5个数,第一个数和第二个数比较,谁小谁就放第一个数的位置,再跟第三,第四和第五用同样的方法,这样就能保证我们第一个一定是最小的了。

同样的,第二小的也用同样的方法,第三小的也是。这样就能保证我们的输出了。既然这样的话,我们来看看一开始问到的那道题。

开始做题

假如给你一个问题,让你输入10个地区的面积(面积为整数),对它们由小到大进行排序,并且输出排序的结果。

首先,我们来输入10个数

int a[10];

int i;

printf("请输入10个面积:\n");

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

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

然后,得到数后,我们就该开始进行排序了。

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

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

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

{

t=a[i];

a[i]=a[j];

a[j]=a[t]

}

最后的最后,只要把这些数都输出就可以啦。

printf("排序后的面积依次是:\n");

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

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

printf("\n");

其实呢,排序除了选择法,还有另外一种,冒泡法(又叫沉底法)

道理是这样的,就是左右两个数比较,大的就放后面,这样,我们就会发现。到最后的那个数,就是最大的了。

我们来看一下程序吧,这个过程稍微有点复杂,看不懂也没关系。

for(j=0;j<=8;j++)

for(i=0;i<=8-j;i++)

if(a[i]>a[i+1])

t=a[i];

a[i]=a[i+1];

a[i+1]=t

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值