插入排序
就想着自己在打扑克牌,接起来一张,放哪里无所谓,再接起来一张,比第一张小,放左边,继续接,可能是中间数,就插在中间....依次
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
外循环好像起牌,不算拿的第一张,从第二张到最后一张
内循环来比较,对于外循环的牌,逐一逆序两两比较,小的就往前插入,主要遇到大牌就停止
首先将待排序的第一个记录作为一个有序段
从第二个开始,到最后一个,依次和前面的有序段进行比较,确定插入位置
分析: 注意这里两次循环中,i
和j
的含义:
i
是外循环,依次把后面的数插入前面的有序序列中,默认arr[0]
为有序的,i
就从1开始j
进来后,依次与前面队列的数进行比较,因为前面的序列是有序的,因此只需要循环比较、交换即可注意这里的
break
,因为前面是都是有序的序列,所以如果当前要插入的值arr[j]
大于或等于arr[j-1]
,则无需继续比较,直接下一次循环就可以了。
最后更新于