对于序列中第二个数开始,使用二分法查找其插入的位置,代码中最后low的值即为该数所在的位置,

注意跳出循环的条件为low > high,不能取等号

为保证为稳定的排序,if(a[mid]==x) low =mid + 1;

#include<iostream>
using namespace std;
int a[100];
void sort1(int *a, int n);
int main()
{int n;while(cin >> n){for(int i = 0; i < n; i++)cin >> a[i];sort1(a, n);for(int i = 0; i < n; i++)cout <<"  " << a[i];cout << endl;}
}void sort1(int *a, int n)
{for(int i = 1; i < n; i++){int x = a[i];int low = 0;int high = i - 1;while(low <= high){int mid = (low + high) / 2;if(x < a[mid])high = mid - 1;elselow = mid + 1; }for(int j = i - 1; j >= low; j--)a[j + 1] = a[j];a[low] = x;}
}

转载于:https://www.cnblogs.com/denghui666/p/8412956.html

排序之二分查找插入排序算法相关推荐

  1. 挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel

    首先提供帮助类 可能这个类还需要更新 .求最大值.求最小值.选择排序.二分查找找出下标.二分查找排好序列里面是否有那个值 public class Util {//求最大值public static ...

  2. 插入排序,二分查找插入排序,使用二叉树的插入排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 实验题7.1 实现二分查找的算法

    [实验目的] (1)掌握查找的概念: (2)熟练掌握二分查找的原理及实现方法. [实验准备] (1)阅读教材中二分查找的相关内容: (2)熟悉二分查找的算法. [实验要求] (1)采用函数调用的方式完 ...

  4. 插入法排序c语言程序,插入排序算法及C语言实现

    插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据. 直接插入排序是插入排序算法中的一种,采用的方法是: ...

  5. 冒泡排序、选择排序、二分查找排序

    package day04.d1.shuzu; import java.util.Arrays; /** * 数组算法测试 * 冒泡排序 * 快速选择排序 * ... * @author Admini ...

  6. 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程

    day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...

  7. 【Java常识】7.0 数组实现冒泡排序、选择排序和二分查找

    1.0 冒泡排序原理 冒泡排序就是:轻的上浮,沉的下降.小的往前排,大的往后走. 原理:若一个N个元素的数组,两个相邻位置比较,如果前面的元素比后面的元素大就换位置. 每一次比较,都是相对最沉的到位. ...

  8. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找

    学习笔记,仅供参考 文章目录 数组高级冒泡排序 数组高级选择排序 二分查找法 数组高级冒泡排序 冒泡排序原理:设数组中有n个元素,从第一个元素开始,对相邻元素进行两两比较,两个元素中大的往后放,第一次 ...

  9. 选择排序 冒泡排序 二分查找

    选择排序 int [] arr = {2,48,28,32,90,12}; for(int i= 0: i < arr.length - 1;i++){ for(int j = i + 1; j ...

最新文章

  1. wamp安装多版本php,WampServer安装多个php版本
  2. Apache Hadoop 2.7如何支持读写OSS
  3. Hadoop学习之MapReduce(三)
  4. 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型
  5. IOC操作Bean管理XML方式(创建对象和set注入属性)
  6. Python(pycharm)在windows下路径 ( ' / ' 与' \ ' )的问题
  7. final、finally、finalize
  8. 我发现了3572个漏洞 今天又是崭新的一天
  9. R语言学习笔记:简单的回归分析
  10. python 秘钥_python – 使用ssh密钥加密和解密密码
  11. php是单进程语言,但是也有办法支持多进程
  12. 用计算机绘制三维设计图步骤,3d效果图一般制作步骤
  13. 保险中的几个“时间”及生日单
  14. 耐得住寂寞,坐得住板凳,也是一种能力。
  15. 程序猿和hr面试时的巅峰对决
  16. token验证的方法
  17. Spring实战学习笔记
  18. [数论] EXBSGS(拔山盖世算法)
  19. python爬取pubmed的文献_爬虫获取pubmed中文献的标题和摘要
  20. 《Gliding vertex on the horizontal bounding box for multi-oriented object detection》算法详解

热门文章

  1. hyfsoft java_Java自动化测试框架-04 - 来给你的测试报告化个妆整个形 - (上)(详细教程)...
  2. python【数据结构与算法】二分模板
  3. 【机器学习入门到精通系列】异常检测
  4. 全卷积神经网路【U-net项目实战】Unet++
  5. c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
  6. mysql发生系统错误2系统找不到指定文件_电脑运行错误代码大全,遇到报错请自己对照断电原因所在吧...
  7. Java魂斗罗1234合集_《魂斗罗》正统续作1234部介绍,别再搞错喽!
  8. 小米宣布加入鸿蒙,中兴和OPPO抵制后,第一个宣布加入鸿蒙阵营的果然是魅族...
  9. java 回调模式_总结!!!总结!!!java回调以及future模式
  10. web项目导入变java项目_eclipse导入web项目变成java项目解决办法