当前位置:首页 > IT技术 > 编程语言 > 正文

在一个有序数列中插入一个数重新进行排序
2021-10-21 23:08:30

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

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

在一个有序数列中插入一个数重新进行排序_冒泡排序/选择排序应用

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

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

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

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

3.注意数组越界问题



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

在一个有序数列中插入一个数重新进行排序_冒泡排序/选择排序应用_02

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


如有不对,欢迎指正。


本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >