1 排序思想:

将待排序的记录Ri插入到已经排好序的记录R1,R2,……,R(N-1)中。

对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置。它之前的元素已经排好序。

第1次排序:将第2个元素插入到前边的有序列表(此时前边只有一个元素,当然是有序的),之后,这个序列的前2个元素就是有序的了。

第2次排序:将第3个元素插入到前边长度为2的有序列表,使得前2个元素是有序的。

以此类推,直到将第N个元素插入到前面长度为(N-1)的有序列表中。

2 算法实现:// 直接插入排序

void straight_insert_sort(int num[], int len){

int i,j,key;

for(j=1;j

key=num[j];

i=j-1;

while(i>=0&&num[i]>key){

num[i+1]=num[i];

i--;

}

num[i+1]=key;

}

}

复制代码

3 性能分析:

3.1 空间复杂度:如上代码,使用了一个辅助单元key,空间复杂度为O(1)

3.2 时间复杂度:

3.2.1 最好情况:待排序记录已经是有序的,则一趟排序,关键字比较1次,记录移动2次。则整个过程

比较次数为

记录移动次数为

时间复杂度O(n)

kmhx.b2b168.com

kmhuaxi.51sole.com

http://www.wenbing.cn/kmhx/

3.2.2 最坏情况:待排序记录已经是逆序的,则一趟排序,关键字比较次数i次(从i-1到0),记录移动(i+2)次。整个过程

比较次数为

记录移动次数为

时间复杂度O(n^2)

3.2.3 平均时间复杂度:O(n^2)

3.3 稳定性:稳定

折半插入排序1 排序思想:

直接排序的基础上,将待排序的记录Ri插入到已经排好序的记录R1,R2,……,R(N-1)中,由于记录R1,R2,……,R(N-1)已经排好序,所以在查找插入位置时可采用“折半查找”。

java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例相关推荐

  1. java 摄像头 win7_Win7系统下JAVA摄像头调用_实例代码介绍

    Win7系统下JAVA摄像头调用_实例代码介绍.由于要搞个人脸识别登录(JAVACV),百度谷歌了一下午,找了网上简单的样例代码来试,可是老是调试不过,出现CaptureDeviceManager.g ...

  2. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  3. Java函数编码_转[收集java的常用函数代码]

    转[收集java的常用函数代码] package net.java2000.tools; /** * Title:        Java Bean 工具 * Description: * Copyr ...

  4. java 静态扫描_静态代码扫描工具 – (八)- 扫描Java项目

    静态代码扫描工具 – (八)- 扫描Java项目 1.准备好Java项目代码 只要是java语言实现的项目均可. 比如,自动化测试的代码,测试平台等均可以. 本次案例,使用java语言实现的测试平台来 ...

  5. java 异常机制_深入理解Java异常处理机制

    一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...

  6. java实现递归算法_如何在Java中实现二进制搜索算法而无需递归

    java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...

  7. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  8. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  9. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

  10. java反射 用处_浅谈Java反射

    一.何为反射 反射就是对于任何一个类都能知道这个类的的所有属性和方法,并且对于任何一个对象都能调用他的属性和方法,而且能修改其属性. 二.反射的作用 就我的理解来看,通常我们在写代码的时会非常强调代码 ...

最新文章

  1. 【学习笔记】超简单的多项式求指(含泰勒展开式、牛顿迭代完成证明)
  2. 深度丨当AI遇见区块链,2018年的第一场火,还是第一场泡沫?
  3. 允许MySQL 帐号远程登录
  4. [原]全桥移相(PSFB)原边电流突跌分析
  5. 黑马程序员--C语言基础之--sizeof()运算符的使用以及注意
  6. ETH联合Meta和鲁汶大学 提出视频恢复算法VRT,在视频超分辨率、去模糊和去噪性能达到SOTA...
  7. mysql 5.7日志配置_mysql-5.7日志设置
  8. 拆解拼多多、趣头条、小红书背后的上海互联网基因
  9. Python学习1——语法
  10. 算法笔记:tarjan算法求强连通分量割点桥
  11. 谷歌5款插件推荐:谷歌工具类、翻译类扩展程序
  12. 直播系统源码,直播系统源码, 直播app系统源码
  13. 全网最全JAVA面试八股文,终于整理完了
  14. 华为鸿蒙的科技话题作文800字,关于科技的话题作文3篇
  15. xcode更新一直失败的解决办法
  16. 关于js 中 try catch用法
  17. python3跑通smpl模型_SMPL模型学习
  18. JS的jsoneditor,用来操作Json格式的界面;json-editor用来根据json数据生成界面
  19. (转)Openbravo ERP架构分析
  20. H5网站-微信浏览器中打开底部fixed遮住内容区域问题

热门文章

  1. 光谱投影颜色感知器件与围栅多桥沟道晶体管技术
  2. Docker基本原理概述
  3. 堆叠式传感器架构带来先进的视觉功能
  4. 特斯拉Tesla Model 3整体架构解析(上)
  5. 大数据调度平台Airflow(一):什么是Airflow
  6. 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象
  7. C++ 如何获取数组的长度
  8. Android TextView textAppearance
  9. Android onTouch 方法 和onTouchEvent 方法
  10. Found option without preceding group in config file E:\mysql\mysql-5.7.23-winx64\my.ini at line 1!