插入排序

来源:互联网 发布:科比09年体测数据 编辑:程序博客网 时间:2024/05/01 23:15

【0】README

  • 0.1)插入排序由 N-1 趟排序组成,对于P=1趟 到P=N-1趟, 插入排序保证从位置0到位置P 上的元素为已排序状态;
  • 0.2)插入排序利用了这样的事实:位置0 到位置P-1 上的元素已经排过序了;

【1】一般的插入排序的过程如下图所示:

这里写图片描述

  • 1.1) p等于多少,序列前的多少个元素就保持有序状态;
  • 1.2) 插入排序源代码参见 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/blob/master/chapter7/p166.c, 打印结果如下:
    这里写图片描述

  • 1.3)复杂度分析

    • 1.3.1)最好情况:也即数组预先就有序了: 显然是O(N)
    • 1.3.2)最差情况:数组预先逆序排列(如结果是升序而预先是降序),T(N) = O(N^2)
  • Attention): 我们的快速排序也用到了插入排序,以解决 待排序数组是小数组(N <= 20)的问题;通常对于小数组不递归的使用快速排序, 而代之以诸如 插入排序这样的对小数组有效的排序算法;

0 0