排序算法:二分排序(插入排序+二分查找)
插入排序就是一直向后读,第一个数,加入前面已经有序的一串数里。
而插入排序是笨笨的一个个向前找的,可以优化一下,用二分查找找到合适的位置。
插入排序代码
void Insertsort2(int a[], int n)
{
int i, j;
for (i = 1; i < n; i++)
if (a[i] < a[i - 1])
{
int temp = a[i];
for (j = i - 1; j >= 0 && a[j] > temp; j--)
a[j + 1] = a[j];
a[j + 1] = temp;
}
}
所以只需要理解一下二分查找就可以了
比如一个串数,已经有序
分成对等(尽量)两块
注意3个数 第一块末端 第二块前端 你手上的数
进行一个大小的比较 考虑在哪块区间就可以了
如果最后只有3个数了,会拆分成2个数+1个数
其实也是一样。。。
如果最后只有2个数了,会拆分成1个数+1个数
其实也是一样。。。
排序算法:二分排序(插入排序+二分查找)相关推荐
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
- php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...
本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...
- 插入排序 php,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...
- 插入排序java_排序算法之直接插入排序Java实现
排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序:ht ...
- 排序算法(2)直接插入排序
排序算法(2)直接插入排序 原理:将数组中的所有元素依次和前面的已经排好序的元素相比较(依次) ,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过. 代码实现: void InsertS ...
- 排序算法---选择排序(java版)
简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...
- JavaScript实现十种经典排序算法(js排序算法)
冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...
- 经典排序算法 - 希尔排序Shell sort
经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...
- 经典排序算法 - 耐心排序Patience Sorting
经典排序算法 - 耐心排序Patience Sorting 这个排序的关键在建桶和入桶规则上 建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶 入桶规则:只要比桶里最上边的数字小即可 ...
最新文章
- 1968年12月9日,恩格尔巴特公开演示了世界上第一个鼠标盒子
- 全息技术“量子飞跃”或彻底改变成像技术
- ios第三方库和工具类
- ICS汇编学习笔记——8086的指令系统
- Android获得图片资源的三种方式
- SQL建表公共字段脚本
- mysql的程序怎么升级成mysqli_如何将mysql更改为mysqli?-问答-阿里云开发者社区-阿里云...
- sql 临时表_深度分析 | JDBC与MySQL临时表空间的分析
- android-tv
- 《并行计算的编程模型》一3.1 引言
- shell脚本ssh登录并执行命令_Linux批量免密码SSH登录案例
- Centos系统设置
- ExecutorService中submit和execute的区别
- 中标麒麟的下载和安装
- python调用讯飞付费版语音转写
- Java后台给PDF加水印并且合并多个PDF文件
- C盘压缩,电脑无法正常启动的解决方法?
- 我参加NVIDIA Sky Hackathon 训练文件的路径设置
- ADSL modern 的常用密码
- Android 耳机驱动知识
热门文章
- 金蝶KIS15.1专业版注册流程和企业认证流程
- 用Binary Viewer查看H264文件中的每一帧
- 电脑中了“魔鬼波”病毒 冲击波补丁
- vue电子数字、时钟数字、的字体引入和使-详细步骤
- myeclipse安装使用svn
- armeabi-v7a arm64-v8a armeabi x86 x86_64区别
- 面经-软件测试面试常见面试题全套合集系列4-5
- 固高运动控制卡学习8 --高速硬件捕获
- python用来正常显示中文标签 plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]错误
- Fortran入门教程(一)——引入篇