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

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论