排序算法2:插入排序

一、直接插入排序

1.算法思想及图解

(1)算法的思想

当对位置 i 处的元素进行排序时,[0,i-1]上的元素一定是已经有序的了,然后将i出的元素,和i-1处元素开始到0处元素截止依次进行比较,如果[i-1,0]处的元素大于i处元素,则将大于i处的元素依次右移一个位置,直到找到比i处小的位置,然后在这个比i处小的位置的后面以为将i处的元素放置上去。

(2)图解

image

2.算法代码实现(java)

image

3.复杂度

按照最坏的情况考虑,如果提供的数组刚好是逆序的话,那么i处的元素插入时就需要比较i-1次,这样总共需要比较的次数就是1+2+3+...+N次,所以时间复杂度就是O(N^2);算法中仅仅用了一个临时变量,所以空间复杂度是O(1).

二、二分法插入排序

二分法插入排序是在直接插入排序的基础上对元素的比较采用了二分查找法进行优化,加快了查找的速度。

1.算法思想

二分插入排序在直接插入排序基础上使用二分查找快速找到需要向右移动的元素的开始的图标,然后将i处的元素插入到相应的位置。

2.算法代码实现

image

三、希尔排序

1.算法思想

    希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1。

以下为图解:

image

2.算法代码实现

image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,086评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,587评论 0 52
  • 其实从小长到大一直比较排斥为了达到一定的目的而去做一些东西,原因可能包括从正向推导出的过于功利,以及从反向推导的会...
    jinzewei阅读 1,683评论 0 2
  • 61、哪些变量影响到Buy Box? 影响力较大的变量 配送:亚马逊将通过亚马逊自身配送(FBA)的商品的运送时间...
    雷卿阅读 3,940评论 0 0