题目:给定9个有序的数列,从中插入一个数,然后重新按从小到大(或者从大到小进行)排序。

原理:通过挪位置数字进行插入,先上代码:

在一个有序数列中插入一个数重新进行排序_有序列表中插入某个数后重新排序

首先9个数字排好序放入一个数组中,通过输入要插入的数,将其和数组中的数进行比较,然后确定插入数应该在数组的哪个位置,如此即可先定位;

后面的for循环即是挪位置的具体代码实现;

误区:1.注意if语句内要放一个break跳出for循环,不然会一直循环下去,直到p=9,这样结果也会出现误差

2.arr[p]=x,这句代码要放在外面,如果放在了里面会导致要插入的那个数位置还没给你挪出来,就直接被替换掉了,这样会少了原本的一个数,然后差入的数打印两个出来

3.注意数组越界问题



再给个进阶点的:即实现任意输入9个数排序后再插入一个数进行排序(冒泡排序/选择排序+上面代码),有兴趣可以写一下:

在一个有序数列中插入一个数重新进行排序_C语言入门_02

这个代码要注意一个问题:就是数组初始化是10个数的,而实际输入只有9个数(有一个数是后面要插入的,加起来是10个),这样arr[9]=0,我们不能让这个数参与那9个数的排序,不然0就会被挤到第一个数去,然后原本9个数的最大数在数组的第10个数位置,这样后面我们插入一个数进去排序的时候,就会把原本的10个数挤出去,导致打印的结果出错,其实就是0占了位置。


如有不对,欢迎指正。