一、折半插入排序(二分插入排序)
将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法。在处理A[i]时,A[0]……A[i-1]已经按关键码值排好序。所谓折半比较,就是在插入A[i]时,取A[i-1/2]的关键码值与A[i]的关键码值进行比较,如果A[i]的关键码值小于A[i-1/2]的关键码值,则说明A[i]只能插入A[0]到A[i-1/2]之间,故...
分类:
编程语言 时间:
2015-06-24 14:40:37
阅读次数:
147
还有一个:二分插入排序 平均时间O(n2) 稳定1、插入排序在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。直接插入排序是稳定的。算法时间复杂度O(n2)--[n的平方]mai...
分类:
移动开发 时间:
2015-06-15 16:19:28
阅读次数:
184
直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。二分插入排序基本思想:在插入第i个元素时,对前面的0~i...
分类:
编程语言 时间:
2015-05-27 00:43:42
阅读次数:
171
折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态。折半插入排序(binaryinsertionsort)是对插入排序算法的一种改进,由于排序算法过程中..
分类:
编程语言 时间:
2015-04-09 17:51:40
阅读次数:
143
package kpp.sort;/** * 当前待插入元素data[i],若data[i]>=data[i-1],则表示排序正常,i++处理下一个元素 * 若data[i]= left;j--){ a[j+1]=a[j]; } ...
分类:
编程语言 时间:
2015-03-27 23:34:28
阅读次数:
126
一.算法思想 1.二分插入排序的基本思想和插入排序一致;都是将某个元素插入到已经有序的序列的正确的位置; 2.和直接插入排序的最大区别是,元素A[i]的位置的方法不一样;直接插入排序是从A[i-1]往前一个个比较,从而找到正确的位置;而二分插入排序,利用前i-1个元素已经是有序的特点结合二分查找.....
分类:
编程语言 时间:
2015-03-09 15:39:41
阅读次数:
168
程序员必须知道的一些排序算法,几乎已经成为面试笔试中的固有模式,一个优秀的程序员不仅要会写,还要深入理解其中的原理,设计思想。一些常见的排序算法做一下归纳总结。排序算法的分类:其中,像直接插入排序,二分插入排序,冒泡排序,快速排序,简单选择排序,堆排序等都需要熟练掌握。
分类:
编程语言 时间:
2015-03-08 12:53:59
阅读次数:
200
二分插入排序算法 一、基本思想:源自于二分查找,假设表中元素是按升序排列,将待插入的关键字与表中间位置记录的关键字与作比较。如果小于该关键字,则将元素插入后面的子表中,反之,如果大于该关键字,则将元素插入前面的子表中。反复迭代,直至所有关键字全部插入表中。 二、C 语言代码: 1 #...
分类:
编程语言 时间:
2015-03-05 22:16:49
阅读次数:
132
一、插入排序
?思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。
?关键问题:在前面已经排好序的序列中找到合适的插入位置。
?方法:
–直接插入排序
–二分插入排序
–希尔排序
①直接插入排序(从后向前找到合适位置后插入)
1、基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到...
分类:
编程语言 时间:
2015-01-29 17:47:36
阅读次数:
206
1.直接插入排序直接插入排序的过程可以理解为一个固定长度的数组被分为两个集合,即已排序集合和未排序。开始时已排序集合为空,而未排序集合即为整个数组。当排序开始后插入一个对象,已排序集合元素数目加1,相应地未排序集合元素数目减1,重复插入过程直至将未排序集合清空为止,这时排序集合就是最终结果。如下图:...
分类:
编程语言 时间:
2015-01-12 20:44:52
阅读次数:
319