一维数据组的顺序排列

学习一维数组中对课上程序的改进

首先附图课上的程序
图源李红老师的c程序基础
在看到这个程序的时候,我就实操了一下,发现其实相邻的数据调换好像能够拓展成全数据顺序排列,那就开始吧!

首先第一步是分析上面每一段的大概用处。

#include <stdio.h>
#define N 10
void main()
{
    int a[N],i,t;
    for(i=0;i<N;i++){       //输入数据
        printf("a[%d]:",i);
        scanf("%d",&a[i]);}
    for(i=0;i<N;i++)        //控制顺序
        if(a[i]>a[i+1])
        {
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
        }
    for(i=0;i<N;i++)
        printf("%d",a[i]);
}

三个整数变量,a[N]是一维数据组,i为数据组中的下标号改变量(记得是从0~N-1哦),t是一个中间量。然后上面的代码大概大家也能很快的理解,我最主要去修改的是控制顺序这一段。在修改后的代码里我加入了d,用于变化比较时的数组下标号。

#include <stdio.h>
#define N 10
void main()
{
    int a[N],i,d,t;
    for(i=0;i<N;i++)
        {
        printf("a[N]:");
        scanf("%d",&a[i]);
        }
    for(i=0;i<N-1;i++)
    {
        for(d=i+1;d<N-1;d++)
        if(a[i]>a[d])
        { 
            t=a[i];
            a[i]=a[d];
            a[d]=t;
        }
    }
    printf("\n");
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
}

这里关注一点就是在d的初值是i+1,因为在每次循环的时候,i会变大,d也应该变大!但是如果是d的初值是1,就会发现以下情况。
错误示范
第二点需要注意的就是一定要注意空格,因为如果不注意,你可能得到一长串你也不认识的数据hhhhh。

当然说了正确的方法,就要说一下离谱的思路

其实这个问题是昨天遗留的……自己太懒然后就去睡觉了。我最开始设想是求ave=sum/N,然后每个数和平均数比较,但是后面一想,平均数好像没啥用emmm(因为可能数值偏差比较严重);第二次就想能不能求MAX,MIN,设想很好但是实际真的还不如平均数hhhhhhh(PASS;那我就在原程序的基础上再叠一层嵌套呗,这种能行吧……尝试了设想了一下,要是这个N是1000,机器岂不是得boom,所以不行。

今天就到这儿啦,明天继续折腾自己~

有一说一,今天最好的学姐在找工作,然后和我将实习的重要性,我突然又开始焦虑了,会不会大学毕业,我就成为社会垃圾哇呜呜呜呜呜。希望自己能好好加油,未来的公司能包吃,加班无所谓!!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值