C语言—数组元素按大小排序

1.方法思想

        数组在C语言中即为数据类型相同的一组数,将一组无规则数按大小依次排序并输出,可以采取冒泡排序的思想,所谓冒泡排序就是数字像汽水中的气泡一样总是向某个方向前进,最终到达最终点。

        假设我们定义了一组数组,从左到右 a[0] ~ a[9] 共10个数组元素,将a[0]与a[1]对比,如果a[0]大于等于a[1],就将二者的数对换(注意这里是将两者代表的数交换大小,而不是将1和0交换,a[1]和a[0]相当于两个容器,是用来装数字的),这样大的数就处于右边,否则不做处理,再比较 a[1]与a[2],同样的大数放右边,以此类推一直比对到a[9],那么第一轮下来,整个数组中最大的数一定是a[9],同理,我们进行第二轮,由于第一轮中已经确定a[9]是最大的数了,所以只要对剩下的9个数重复一遍操作,第二轮结束后就可以得到 a[8] <= a[9] ,如此往复,最终就可以实现数组按大小排序了。

没错,这里的思想正是循环!

2.实战演练

1.定义数组

        手动输入一组数并将其打印在屏幕上:

        #include<stdio.h>

        int main()

        {

        int a[10],i;/*定义一个数组及变量i,数组元素共10个*/

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

        {

        printf("input a[i] when i=%d\n",i);

        scanf("%d",&a[i]);/*依次输入a[0]至a[9]的值*/

        }

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

        printf("%d ",a[i]);/*打印数组*/

        }

2.按从大到小的顺序对数组排序

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

        {

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

        {

        if(a[s]>=a[s+1])

        {

        medium=a[s];/*medium是交换媒介*/

        a[s]=a[s+1];

        a[s+1]=medium;

        }/*if语句实现大数右移的功能*/

        }/*s的循环语句与if语句结合实现上文中所说的每一轮操作中将最大数移动至最右方*/

        printf("%d ",a[9-i]);/*每一轮比较后输出本轮中最大的数,事实上就是排序,a[9-i]就是每轮中最大的数*/

        }/*i的循环就是实现多轮操作,即第一轮比较结束后进行第二轮,一直重复到第九轮*/

3.完整程序如下:

        

#include<stdio.h>
int main()
{
    int a[10],i,s,medium;/*定义一个数组及变量,数组元素共10个*/
    for(i=0;i<10;i++)
        {
            printf("input a[i] when i=%d\n",i);
            scanf("%d",&a[i]);/*依次输入a[0]至a[9]的值*/
          }
    for(i=0;i<10;i++)
        printf("%d ",a[i]);/*打印数组*/
    printf("%c",'\n');
    for(i=0;i<10;i++)
        {
            for(s=0;s<9-i;s++)
            {
                if(a[s]>=a[s+1])
                {
                    medium=a[s];/*medium是交换媒介*/
                    a[s]=a[s+1];
                    a[s+1]=medium;
                    }/*if语句实现大数右移的功能*/
             }/*s的循环语句与if语句结合实现上文中所说的每一轮操作中将最大数移动至最右方*/
                  printf("%d ",a[9-i]);/*每一轮比较后输出本轮中最大的数,事实上就是排序,a[9-i]就是每轮中最大的数*/
        }/*i的循环就是实现多轮操作,即第一轮比较结束后进行第二轮,一直重复到第九轮*/
}

4.运行结果

input a[i] when i=0
3
input a[i] when i=1
4
input a[i] when i=2
2
input a[i] when i=3
4
input a[i] when i=4
5
input a[i] when i=5
9
input a[i] when i=6
25
input a[i] when i=7
98
input a[i] when i=8
535
input a[i] when i=9
0675
3 4 2 4 5 9 25 98 535 675
675 535 98 25 9 5 4 4 3 2
Process returned 0 (0x0)   execution time : 70.463 s
Press any key to continue.

        结果可以看出已实现既定排序的目标,是不是很简单呢?

  • 34
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值