算法分析: (1)时间复杂度 从时间上比较,折半查找比顺序查找快,所以就平均性能来说,折半插入排序优于直接插入排序。 折半插入排序所需要的关键字比较次数与待排序序列的初始排列无关,仅依赖于记录的个数。不论初始序列情况如何,在插入第i个记录时,需要经过logi+1(向下取整+1)次比较,才能确定它插入 ...
分类:
编程语言 时间:
2018-09-22 16:57:26
阅读次数:
166
/** 建立一个用于操作数组的工具类,其中包含着常见的对数组的操作函数如:排序,最值等 @author jepson @version v1.0 */ public class ArrayTool { /*该类中的方法都是静态的,所以该类是不需要创建对象的, 为了保证不让其它程序创建该类对象 可以将... ...
分类:
编程语言 时间:
2018-08-10 21:30:32
阅读次数:
150
文字描述 和直接插入排序比较,只是把“查找”操作利用“折半查找”来实现,由此进行的插入排序叫做折半插入排序。 示意图 略 算法分析 和直接插入排序比,减少了比较次数,但是移动次数没有变,所以折半插入排序算法的时间复杂度仍然是n*n, 辅助空间为1,是稳定的排序方法。 代码实现 1 #include ...
分类:
编程语言 时间:
2018-07-21 17:04:24
阅读次数:
138
第八章《排序》 一、直接插入排序 //(1)时间复杂度分析: // ①最坏情况(整个序列逆序):O(n²) // ②最好情况(整个序列有序):O(n) // ③平均时间复杂度:O(n²) //(2)空间复杂度分析: // ①:O(1) 二、折半插入排序 三、希尔排序 四、冒泡排序 五、快速排序 六、 ...
分类:
编程语言 时间:
2018-06-20 22:31:56
阅读次数:
248
算法简介 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 算法动态演示: 算法思想 ...
分类:
编程语言 时间:
2018-06-09 11:37:16
阅读次数:
223
主要由三个插入排序的重要算法:直接插入排序、折半插入排序和希尔排序。 其基本思想在于每次讲一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。 直接插入排序 稳定 O(n^2) 适用性:直接插入排序算法适用于顺序存储和链式存储的线性表。当为链式存储时,可以从前往后查 ...
分类:
编程语言 时间:
2018-05-09 21:05:52
阅读次数:
223
基本思想 折半插入排序的基本思想与直接插入排序一样,在插入第i(i≥1)i(i≥1)个元素时,前面i?1i?1个元素已经排好序。区别在于寻找插入位置的方法不同,折半插入排序是采用折半查找法来寻找插入位置的。 折半查找法的基本思路是:用待插元素的值与当前查找序列的中间元素的值进行比较,以当前查找序列的 ...
分类:
其他好文 时间:
2018-04-29 14:33:44
阅读次数:
148
void BinaryInsertionSort(int a[],int left,int right); //对数组a[left]到a[right]段数据从小到大排序 void BinaryInsertionSort(int a[],int left,int right) { int low,mi... ...
分类:
编程语言 时间:
2018-04-17 22:27:08
阅读次数:
214
折半插入排序思想和直接插入排序类似。 1)找到插入位置; 2)依次后移正确位置及后面的元素。 区别是查找插入位置的方法不同。 折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置。 注意,折半查找法的一个基本条件就是序列已经有序。 直接上代码: ...
分类:
编程语言 时间:
2018-03-06 20:15:46
阅读次数:
195
基本算法如下: 1.插入排序 直接插入排序 折半插入排序 shell排序 2.交换排序 冒泡排序 快速排序 3.选择排序 简单选择排序 树形选择排序 堆排序 4.归并排序 二路归并排序 多路归并排序 5.基数排序 基数排序 ...
分类:
编程语言 时间:
2018-02-03 18:54:35
阅读次数:
171