解题思路:
可以想象成教室里面有一列,按照高矮顺序排位置,已经排列好了,突然有一个新同学加入,然后我们要把他按照高矮顺序对他进行排座才不会影响其他同学。我们需要加一个座位在最后。然后最高的坐最后然后次高的依次往后坐,只有后面的同学留出位置这样新来的同学才有位置坐下。
注意事项:
参考代码:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复