数据结构与算法学习之路:二分插入排序
来源:互联网 发布:qq群怎么优化排名 编辑:程序博客网 时间:2024/05/17 14:25
一、什么是二分插入排序?
设在数据表中有一个元素序列v[0],v[1],v[2]......v[n].其中v[0],v[1],v[2]......v[i-1]是已经排好序的元素。在插入v[i]。利用折半搜索寻找v[i]的插入位置。同时,二分插入排序是一种稳定的排序。当n较大时,总排序码比较次数比直接插入排序的最差情况好得多,但比最好情况要差,所元素初始序列已经按排序码接近有序时,直接插入排序比二分插入排序比较次数少。二分插入排序元素移动次数与直接插入排序相同,依赖于元素初始序列。
事实上,我们可以将二分插入排序理解为直接插入排序的一种改进,利用二分的思想减少了对比的次数。
时间复杂度:虽然二分插入排序中,找到插入的位置的平均时间是O(nlogn),但是移动元素仍需要O(n^2)的时间。所以总的来说,二分插入排序的时间复杂度仍然是O(n^2)。
二、算法思想:
利用二分查找找出位置,然后插入。
三、代码实现:
<span style="font-size:12px;">void BinaryInsert_Sort(int* nums, int length){int low, high, middle;for (int i = 2; i < length; ++i){low = 1;high = i - 1;nums[0] = nums[i];while (low <= high){middle = (high + low) / 2;if (nums[middle]>=nums[0])high = middle - 1;elselow = middle + 1;}for (int j = i; j > low; --j)nums[j] = nums[j - 1];nums[low] = nums[0];}</span>
0 0
- 数据结构与算法学习之路:二分插入排序
- 数据结构与算法学习之路:直接插入排序
- 【数据结构与算法 00】二分插入排序
- 用Python 学习数据结构与算法 五、插入排序&二分查找
- 数据结构与算法之二分法插入排序
- 数据结构与算法之插入排序
- 数据结构与算法之插入排序
- Java数据结构与算法之插入排序
- 数据结构与算法-插入排序
- 【数据结构与算法】插入排序
- 算法与数据结构---插入排序
- Java数据结构算法之选择排序、插入排序、冒泡排序、二分查找
- 算法学习与实践之插入排序
- 数据结构之二分插入排序------java实现
- [数据结构]二分插入排序
- 新手学习数据结构与算法---直接插入排序
- 用Python 学习数据结构与算法 二、插入排序
- 《数据结构与算法》学习笔记7 插入排序
- Shell脚本命令的执行顺序
- Android源码阅读笔记1 - init.c的main函数分析
- JavaScript自动生成博文目录导航
- iOS中3种正则表达式的使用与比较
- 无题
- 数据结构与算法学习之路:二分插入排序
- C++笔试面试宝典总结
- nginx upload module/process模块的安装
- treeView控件实例--Ajax局部刷新
- 推荐21款最佳 HTML5 网页游戏
- poj1703
- Linux以外的开源操作系统大汇总
- Hadoop 新 MapReduce 框架 Yarn 详解
- 10个和 Flash 一样的 HTML5 应用演示