排序算法——插入排序 Insertion Sort

Insertion Srot 即插入排序,是一种简单直观的排序算法,其基本原理是先构建一个空的有序序列,然后依次扫描未排序数据,在有序序列中从后向前扫描,找到相应位置并插入。插入排序通常只需要O(1)的辅助空间,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

算法描述:

1. 从第一个元素开始,该元素可以认为已经被排序

2. 取出下一个元素,在已经排序的元素序列中从后向前扫描

3. 如果该元素(已排序)大于新元素,将该元素移到下一位置

4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

5. 将新元素插入到该位置后

6. 重复步骤2~5

如果比较操作的代价比较大的放,可以用插入排序的变种 :二分查找插入排序,即在寻找元素插入有序序列的位置时,不是从后向前扫描,而是利用二分查找算法查找插入位置。

例如对初始无序序列9 7 6 15 16 5 10 11,利用直接插入排序算法进行排序的过程如下图

 

初始状态:9 7 6 15 16 5 10 11

(1)从第一个数9开始,因为只有一个数字,所以9是有序列序列;

(2)取第二个数7,在有序列序列中从后向前扫描,找到7的合适插入位置,得到有序序列7 9;

(3)取第三个数字6,在有序列序列中从后向前扫描,找到6的合适插入位置,得到有序序列6 7 9;

... 依次类推,最终完成排序

要注意的一点是,在有序序列中从后向前

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章