内部排序—直接插入排序
2017-06-02 09:03
197 查看
直接插入排序是一种简单的排序方法,具体做法是:在插入第i个记录时,R1、R2…Ri-1已经排好序,这时候将Ri的关键字Ki依次与关键字Ki-1、Ki-2等进行比较,从而找到应该插入的位置并将Ri插入,插入位置及其后的记录依次向后移动。
直接插入排序法在最好的情况下(待排序列已按照关键码有序)每趟排序只需要做1次比较而且不需要移动元素,因此n个元素排序时的总比较次数为n-1次,总的移动次数为0次。在最坏的情况下(元素已经逆序排序),在进行第j趟排序时,待插入的记录需要和前面的每个记录进行比较,比较次数为j(设置监视哨时,包括与监视哨的一次比较)或j-1(不设置监视哨),移动次数为j+1。 直接插入排序时一种稳定的排序算法,时间复杂度为O(n2)。在排序过程中仅需要一个元辅助空间,空间复杂度为O(1)。
[code]///
/// 直接插入排序 不带哨兵排序
/// 思想:默认认为第一个是有序的,从待排序的数组中依次取一个元素和已排序的比较
///
/// 待排序数组
///
private int[] InsertSort(int[] arrData)
{
int temp=0;
//从第二个元素开始循环
for(int i=1;i
直接插入排序法在最好的情况下(待排序列已按照关键码有序)每趟排序只需要做1次比较而且不需要移动元素,因此n个元素排序时的总比较次数为n-1次,总的移动次数为0次。在最坏的情况下(元素已经逆序排序),在进行第j趟排序时,待插入的记录需要和前面的每个记录进行比较,比较次数为j(设置监视哨时,包括与监视哨的一次比较)或j-1(不设置监视哨),移动次数为j+1。 直接插入排序时一种稳定的排序算法,时间复杂度为O(n2)。在排序过程中仅需要一个元辅助空间,空间复杂度为O(1)。
[code]///
/// 直接插入排序 不带哨兵排序
/// 思想:默认认为第一个是有序的,从待排序的数组中依次取一个元素和已排序的比较
///
/// 待排序数组
///
private int[] InsertSort(int[] arrData)
{
int temp=0;
//从第二个元素开始循环
for(int i=1;i
相关文章推荐
- 2015年大二上-数据结构-内部排序-(1)-直接插入排序
- java五种内部排序(直接插入排序、希尔排序、快速排序、堆排序、归并排序)
- 10-1-直接插入排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 直接插入排序(内部排序)
- 【内部排序】直接插入排序
- 【内部排序】一:直接插入排序(Straight Insertion Sorting)的多种实现(不断优化+源码)
- 编程菜鸟的日记-初学尝试编程-整理内部排序(交换排序(冒泡排序和快速排序)、直接选择排序、直接插入排序,希尔排序)
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序
- C++代码,数据结构-内部排序-插入排序-直接插入排序
- 内部排序——直接插入排序
- 第十五周内部排序(2)项目1---(1)直接插入排序
- 数据结构-直接插入排序
- PHP数据结构之直接插入排序
- 排序算法(一)直接插入排序
- 插入排序——直接插入排序
- 直接插入排序
- 算法笔记:(一)插入排序:直接插入排序(Straight Insertion Sort)
- (24)直接插入排序
- 使用直接插入排序原理对自定义的Vector进行排序
- 直接插入排序