折半插入排序C/C++
void BinaryInsertionSort(int a[],int left,int right);//对数组a[left]到a[right]段数据从小到大排序 void BinaryInsertionSort(int a[],int left,int right) {int low,middle,high;int temp;int i,j;//待排元素left+1 ---> right 共right - left个,a[left]默认有序for (i=left+1;i<=right;i++){ temp = a[i];low = left; high = i - 1; //i-1为已排好序列的右边界while(low<=high){middle = (low + high) / 2;if (a[i]<a[middle]) //应当将a[i]插入左半区high = middle - 1;else //应当将a[i]插入右半区low = middle + 1;}//插入位置为low,low位置及其后的元素后移一位(i-1为已排好序列的右边界)for (j=i-1;j>=low;j--)a[j+1] = a[j];a[low] = temp;} }/*算法分析:time-complexity: 折半插入排序在查找插入位置时花费的时间很少,但移动次数与直接插入排序次数一样,最差情况下时间复杂度为O(n2),最好情况下为O(nlog2n);平均情况下为O(n2);space-complexity: O(1);算法不稳定. */
转载于:https://www.cnblogs.com/daemon94011/p/8870096.html
折半插入排序C/C++相关推荐
- java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例
1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,--,R(N-1)中. 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置.它之前的元素已经排 ...
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- 折半插入排序稳定吗_C++实现经典算法--折半插入排序
本节用c++实现经典的折半插入排序,也是王道上总结得插入排序的第二种算法,思路很清晰,首先将用户输入保存在数组中,然后从数组第二个元素开始遍历整个序列,每次将元素跟其左边邻居元素比较,如果出现小于其邻 ...
- 简单插入排序,折半插入排序和2路插入排序 c源码
以下三种插入排序时间复杂度均为O(n^2) 简单插入排序,简单直接.假定数组有序,插入 i, 从后往前遍历找到适合位置 j,移动 j +1 ~ i -1往后一位,插入i到j中. void insert ...
- 三种插入排序算法:直接插入排序、折半插入排序、希尔插入排序
一.直接插入排序 空间复杂度:O(1) 时间复杂度:O(n^2) 稳定性:稳定 适用性:顺序表和链表 //直接插入排序 void InsertSort1(int A[],int n){int i,j, ...
- 数据结构之折半插入排序图文详解及代码(C++实现)
问题: 对待排序的数组r[1..n]中的元素进行直接插入排序,得到一个有序的(从小到大)的数组r[1..n]. 算法思想: 1.设待排序的记录存放在数组r[1..n]中,r[1]是一个有序序列. 2. ...
- C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)
折半插入排序Binary Insertion Sort 折半插入排序(Binary Insertion Sort)算法的完整源码(定义,实现,main函数测试) 折半插入排序(Binary Inser ...
- C++实现折半插入排序
在"C++实现直接插入排序 "中,由于插入排序的基本操作是在一个有序表中进行查找和插入,则这个"查找"操作可以利用"折半查找"来实现,由此进 ...
- 直接插入排序,折半插入排序,希尔排序,简单选择排序,冒泡排序,快速排序模板以及比较次数与移动次数的分析,折半搜索算法模板
#include<stdio.h> #include<time.h> #include <stdlib.h>const int maxx=1e2+1; int a[ ...
- 二分查找和折半插入排序一块说说-很合适~~~
前言 上一篇在聊时间复杂度和空间复杂度时,没有按指定格式显示(明明预览的时候没问题的),强迫症的我稍微优化了一下重新发布,目的就是让小伙伴看着舒服. 上次聊到的直接插入排序在比较有序数据和待插入数据时 ...
最新文章
- 人脸识别(三)——源码放送。opencv人脸识别
- 牛客 - 货物种类(差分)
- 《数据库SQL实战》查找当前薪水详情以及部门编号dept_no
- mac地址和ip地址的区别(转)
- Ubuntu上安装Robomongo及添加到启动器
- 基于python的销售系统_python实现超市商品销售管理系统
- NeatUpload的安装使用 文件上传。可传大文件。
- “开房信息泄露案”开审,“B/S架构”酒店管理系统终成酒店大患
- html5移动端海报制作,H5制作利器,教你分分钟制作高/大/上H5海报!
- swper实现分页器样式修改
- CUDA安装出现图形驱动程序安装失败
- 国产化系统改造实践(未完)
- Allegro中显示两种单位方法
- 计算机卡死快捷键,必看!电脑运行卡或软件卡死无响应,怎么办?
- 华擎主板安装linux系统,J3455 篇一:华擎J3455主板安装Ubuntu server
- easyui datagrid th标签列数字保留2位小数
- html 图片 空白,HTML图片标签空白解决方法
- 关于MOS管栅极和栅介质(氧化物)的材料选择
- 5号字对应的数字字号_请问在WORD文档里,字体大小所对应的用数字表示是多少...
- NAXX Demo2_WYQ_01
热门文章
- mysql5.7.11无法启动_MySQL5.7.11免安装版的安装和配置:解决MYSQL 服务无法启动问题...
- capture RGBD data with opencv4.1.1 from XTION2 on windows 10
- CGAL1_1 Three Points and One Segment
- linux wget安装mysql_linux安装mysql
- e7用什么主板_主板当中的纽扣电池有什么用?电池没电了会怎样?
- linux怎么查看服务器主频,Linux环境下查看服务器硬件信息
- el-table固定列之后没有出现滚动条_一道经典的MySQL面试题,答案出现三次反转...
- 目标检测综述——两阶段检测器
- 如何筛选特征?用随机森林(RF)
- 图像风格转换 - keras简化版实现