package sort;
/**
* @author linjia
* 折半插入排序
*/
public class BinaryInsertSort {
public int[] binSort(int r[], int n) {
for(int i=1;i<n;i++)
{
int temp=r[i];
int low=0;
int high=i-1;
while(low<=high)
{
int mid=(low+high)/2; //折半
if(temp<r[mid])high=mid-1; //插入点在低半区
else low=mid+1; //插入点在高半区
}
System.out.println("low:"+low+" high:"+high);
for(int j=i-1;j>=high+1;j--)
{
r[j+1]=r[j];
}
r[high+1]=temp;
}
return r;
}
public static void main(String[] args) {
int[] test = { 3, 9, 8, 55, 97, 33, 6, 1 };
test = new BinaryInsertSort().binSort(test, test.length);
for (int i : test) {
System.out.print(i+" ");
}
}
}
结果:
low:1 high:0
low:1 high:0
low:3 high:2
low:4 high:3
low:3 high:2
low:1 high:0
low:0 high:-1
1 3 6 8 9 33 55 97
与直接插入排序相比,折半插入排序明显地减少了关键字的“比较”次数,但记录“移动”次数不变,故时间复杂度为n(o^2)
分享到:
相关推荐
数据结构中的折半插入排序算法用C语言来实现的完整示例程序
折半插入排序(Binary Insertion Sort)是直接插入排序的一种改进版本,主要区别在于寻找插入位置的方式。在直接插入排序中,我们使用线性搜索来找到新元素应该插入的位置,而在折半插入排序中,我们使用二分搜索来...
折半插入排序
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现 代码运行正常 不会有任何的问题
10种排序算法代码+综合比较代码(直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、折半插入排序、2路插入排序),其中不仅有各种排序算法的代码,还包含10种代码在关键字...
数据结构 c语言 折半插入排序 源码
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
需要使用2013版本以上的Visual Studio才能正常打开 采用C++面向对象 详细的注释说明,简洁易懂 有点儿bug
常见的几种排序方式,包括选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序。vs2008实现,对话框方式,主要实现字符串的由小到大排序。点击“几种排序方法.vcproj“运行。字符集使用多字节集,不能用...
本文实例为大家分享了C++实现折半插入排序的具体代码,供大家参考,具体内容如下 一、思路: 较插入排序,减少了比较的次数,但是插入时间还是一样。 (1)按二分查找的方法,查找V[i]在V[0],V[1]…V[i-1]中插入的...
大学课程、数据结构、C代码、 以下问题要求统一在一个大程序里解决。 1折半插入排序 2冒泡排序 3快速排序 4简单选择排序 5归并排序 6堆排序
数据结构中的折半查找和插入排序(利用插入排序的方式对一组数进行排序),数组中的数需要自己输入,很简单的代码
目录插入排序直接插入排序基本原理代码实现性能分析折半插入排序代码实现希尔排序基本原理代码实现性能分析选择排序单向选择排序基本原理代码实现性能分析双向选择排序代码实现堆排序基本原理代码实现性能分析冒泡...
首先看一下例子,将数据一个个的插入到一个列表中,插入后这个列表就排序好了 注意:这个列表是递增的,而且内存空间已分配好,只是没有填充真正的数据,如下代码: 代码如下:int InsertSort(MergeType *L, int ...
个人原创总结的常用排序算法C语言示例代码解说PDF...包含有直接插入排序,折半插入排序,2路直接插入排序,起泡排序,简单选择排序,快速排序,堆排序,(希尔排序,归并排序,基数排序为空白),供学习排序算法的爱好者参考。
数据结构报告c++,简单选择排序,冒牌排序,插入排序,快速排序,两路合并排序,堆排序,几种排序方法的比较,有详细的源代码和实验报告
希尔排序的源代码; 平台:CentOS release 5.4 (Final) 编译器:GCC 4.3.2