blue


私信TA

用户名:uq_92644942754

访问量:383

签 名:

再见少年拉满弓,不惧岁月不惧风

等  级
排  名 3559
经  验 1899
参赛次数 0
文章发表 7
年  龄 21
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
可以想象成教室里面有一列,按照高矮顺序排位置,已经排列好了,突然有一个新同学加入,然后我们要把他按照高矮顺序对他进行排座才不会影响其他同学。我们需要加一个座位在最后。然后最高的坐最后然后次高的依次往后坐,只有后面的同学留出位置这样新来的同学才有位置坐下。

注意事项:

参考代码:

#include<stdio.h>

int main() {

    int a[10];     //定义一个长度为10的数组来存放元素

    int b;            //定义我们需要插入的数;

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

        scanf("%d", &a[i]);    //通过循环依次为数组中的元素赋值

    }

    scanf("%d", &b);    //输入我们需要插入的数

    for (int i = 0;i < 9;i++) {    //现在该数组中只有9个元素。

        if (a[i] > b) {    //将我们输入的这个数依次与排列好的数组中的元素进行比较,当输入的这个数大于数组中的某一个元素时,我们就将输入的数插入到比它大的元素的那个位置,而被占了位置的元素就只能占下一个元素的位置,依次重复直到最后一个元素

            for (int j = 9;j > i;j--) {   

                a[j] = a[j - 1];  //因为有元素插入的话从插入点开始,元素依次退一位。最后一个位置存放倒数第二个元素位置,倒数第二个元素位置存放倒数第三位置,直到到被插入的元素占的那个元素位置

            }

            a[i] = b;    //最后将输入的元素插入数组中

            break;    //后面就不必要循环了,因为本身这个数组就是已经排序过的。

        }

        else {

            a[9] = b; //如果数组中没有比插入的这个数大的,那么就直接将这个数放最后面。

        }

    }

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

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

    }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »