插入排序之折半插入排序
来源:互联网 发布:淘宝水果店铺装修 编辑:程序博客网 时间:2024/06/06 17:25
直接插入排序算法在待排序序列比较短时,比较使用,但是到序列比较长时,其效率就差些了,为了提高效率可以对插入排序算法进行适当的改进,可以从减少比较和移动的次数入手,当将第i个数插入前i-1的有序序列的时候,可以利用折半查找的方式确定最终的插入位置,从而就会减少比较的次数。这种排序算法我们就称作折半插入排序算法。
1 2 3 4 5
1 3 5 8 9 4low high high low low low = high = 3 4要插入的位置就是位置3算法
void BinsSort(RecType R[],int n)
{
for(i=2;i<=n;i++)
{
R[0] = R[i];
low=1; high = i-1;
while(low<= high)//折半查找要插入的位置
{
m=(low+high)/2;
if(R[0].key < R[m].key)
{
high = m-1;
}
else
{
low = m+1;
}
}
for(j = i-1;j>=high+1;j--) //这个循环是将待排序的数字插入到相应的位置,与直接插入排序一样,移动的位置是一样的
{
R[j+1] = R[j];
}
R[high+1] = R[0];
}
}
总结:由于折半查找只是缩短了待查找数的比较次数,但是移动的次数还是和直接插入排序是一样的,
因此其时间复杂度仍然为o(n2).
阅读全文
0 0
- 排序之折半插入排序
- 插入排序之折半插入排序
- 7 -- 插入排序之折半插入排序
- 插入排序之折半插入排序-binaryinsertsort
- 插入排序之折半插入排序
- 插入排序之--折半插入排序
- 插入排序之折半插入排序
- 插入排序--折半插入
- 插入排序--折半插入
- 插入排序之直接插入排序和折半插入排序
- 数据结构之 折半插入排序
- 排序:折半插入排序
- 排序--折半插入排序
- 排序-折半插入排序
- 【插入排序】折半插入排序
- 插入排序--折半插入排序
- 折半插入排序,插入排序
- Java排序之插入排序[二分、折半插入排序](4)
- mysql json类型操作
- 数据结构:排序
- 专题二 符号的技巧---- 12.位运算符的分析
- 2017图灵杯问题F 一道简单的递推题()
- 一个练手的学生管理系统
- 插入排序之折半插入排序
- 记一下mybatis查询Oracle数据库,包括了分页、获取总记录数等操作
- A. An abandoned sentiment from past
- android中创建平移的button
- volatile变量的特殊规则
- 泛型总结
- 创建类模式之一单例模式
- C语言实现单链表基础操作--增删查改
- 第一讲_SQP添加与查询语句