C++算法之插入排序
文章目录
一、算法描述
整理插入排序算法描述如下:
- 枚举序列中第
2~n
个元素。 - 当枚举元素i时,前
i-1
个元素已经有序。将第i个元素插入到前i-1
个元素的有序序列中,形成长度为i的有序序列。 - 枚举过程结束后,整个序列有序。
在上述算法描述中,我们有个关键的步骤——插入操作:将第i个元素插入到前i-1
个元素的有序序列中,形成长度为i的有序序列。
怎样实现这个过程呢?
一种实现思路和前面介绍的“火车站插队”过程十分类似。比如对于如下序列:
这个序列的前4
个元素已经有序,现在我们要把2
插入到前4
个元素中去。
1、首先让2
出队。
2、然后将其与6
比较,发现2<6
,说明2
应该在6
前面。所以我们将6
向后移动。
3、再将其与5
比较,发现2<5
,说明2
应该排在5
前面。所以我们将5
向后移动。
4、经过同样的分析,4
也应该向后移。
5、最后我们将2
与1
比较,发现1<2
,说明2
应该放在1
的后面。正好经过前面的移动,1后面有一个空位,所以我们把2
插入在这个空位中。
以上就