插入排序
2015-10-03 17:27
357 查看
【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)的问题;通常对于小数组不递归的使用快速排序, 而代之以诸如 插入排序这样的对小数组有效的排序算法;
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法