欢迎关注笔者,你的支持是持续更博的最大动力
问题描述
给n个数按从小到大排序 (插入排序)
思路
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200813171543383.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3ODAxOA==,size_16,color_FFFFFF,t_70#pic_center)
插入排序:把无序部分元素插入有序部分
1.用无序部分的第1个元素,和前面有序部分每一个元素比较;
2.如果比前面有序部分某元素小,则插到那个元素前面;
…
直到最后一个元素排完。
关于怎么插入:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200813211158160.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3ODAxOA==,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200813211207380.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3ODAxOA==,size_16,color_FFFFFF,t_70#pic_center)
代码
代码思路
因为位置1是第一个无序元素 (位置0不用排,有序),所以从位置1开始排序:
- 和前面有序部分每一个元素比较;
- 如果比前面有序部分位置 j 元素小,则插到那个元素前面:
– 把这个无序元素放到临时位,空出位置
– 把位置 j 往后的有序元素,倒着依次往后挪一位
– 无序元素插入位置 j