排序算法——折半插入排序
来源:互联网 发布:天阳宏业怎么样知乎 编辑:程序博客网 时间:2024/05/17 08:46
前言
之前已经介绍过了插入排序的原理了。但是对于插入位置的选择就可以通过二分查找法的方式进行求取,加快算法运行。
1. 编码
template<typename T> struct Disp{ void operator()(T value) { cout << value << "\t"; }};//折半插入排序void InsertSort2(std::vector<int>& vec){ int len(vec.size()); if(len == 0) return; cout << "display origin array:" << endl; for_each(vec.begin(), vec.end(), Disp<int>()); //打印原始的数据 for(int i=1; i<len; ++i) { int left(0), midle(-1), right(i-1),temp(vec[i]); while(left < right) //使用二分查找的思想,在已知序列里面找到需要操作的位置 { midle = (right-left)/2; //得到中间位置 if(vec[midle] > temp) right = midle - 1; //当前的中位数大于参考值了,那么向左右移动(变小) else left = midle + 1; //当前的中位数小于参考值了,那么向右移动(变大) } for(int j=i-1; j>=left; --j) //将数据low~j的数据向右移动 vec[j+1] = vec[j]; vec[left] = temp; } cout << "\narray sorted:" << endl; for_each(vec.begin(), vec.end(), Disp<int>());}
阅读全文
0 0
- 排序算法——折半插入排序
- 数据结构排序算法——折半插入
- 基础算法——折半插入排序
- 排序算法——插入排序(直接插入排序、折半插入排序、希尔排序)
- 折半插入排序算法
- 折半插入排序算法
- 折半插入排序算法
- 折半插入排序算法
- 折半插入排序算法
- 折半插入排序算法
- 插入排序——折半插入排序
- 插入排序——折半插入排序
- 排序算法———折半插入排序
- 排序算法------折半插入排序
- 【排序算法】折半插入排序
- 【排序算法】折半插入排序
- Java排序算法总结之(一)——插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序——折半插入排序
- android源码下可执行的一些命令
- 关于程序员的自我提升
- OpenCV-Python教程(10、直方图均衡化)
- JZOJ 100035【NOIP2017提高A组模拟7.10】区间
- Session共享的几种不同实现方案
- 排序算法——折半插入排序
- 关于Sql Server JDBC 4.0驱动在maven中引入失败的问题
- 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)
- Android Studio SDK Manager 无法更新
- Kibana(五):调试模式无法启动的解决办法
- Unity 开发日记/教程 俄罗斯方块 (二) 搭建方块UI和生成方块.
- pykafka简单应用
- Ubuntu16.04 和 Win7 双系统启动顺序更改
- 文件copy