直接插入排序/二分插入排序/希尔排序
时间:2019-10-03
本文章向大家介绍直接插入排序/二分插入排序/希尔排序,主要包括直接插入排序/二分插入排序/希尔排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
---恢复内容开始---
插入排序是在源数据已经有序的情况下进行排序。时间复杂度O(N^2),稳定的
直接插入排序
代码如下
public static int[] insertSort(int [] a){ if(a==null||a.length==0){ return a;} for(int i=1;i<a.length;i++){ for(int j=i-1;j>=0&&a[j]>a[j+1];j--) swap(a,j,j+1);//满足前一个大于后一个才进行交换 }
return a; }
二分插入 前提也是原数组是有序的
public static int[] subInser(int a[]) { for (int i = 1; i < a.length; i++) { int temp = a[i]; int low = 0, high = i - 1; int mid = -1; while (low <= high) { mid = low + (high - low) / 2; if (a[mid] > temp) { high = mid - 1; } else { // 元素相同时,也插入在后面的位置 low = mid + 1; } } for (int j = i - 1; j >= low; j--) { a[j + 1] = a[j]; } a[low] = temp; } return a; }
希尔排序
不再是固定的二分,分段数d在不断的缩小,直到为1
1 public static int[] shellsort(int [] a){ 2 int d=a.length/2; 3 int tmp; 4 while(d>0){ 5 for(int i=d;i<a.length;i++){ 6 tmp=a[i]; 7 int j=i; 8 while(j>d&&tmp<a[j-d]){ 9 a[j]=a[j-d]; 10 j-=d; 11 } 12 a[j]=tmp; 13 } 14 d=d/2; 15 } 16 return a; 17 }
原文地址:https://www.cnblogs.com/bowenqianngzhibushiwo/p/11619895.html
- WordPress 设置与调用 Cookie 的相关代码
- MSBuild入门
- HTTP Basic Authentication验证WCF Data Service
- 移除WordPress 仪表盘首页的“插件”“其它WordPress 新闻”小工具
- 解决VMware 7在Windows 7上无法上网的问题
- Windows Server 2008群集仲裁机制
- [C#2] 5-迭代器
- 服务器未能识别 HTTP 标头 SOAPAction 的值
- 实用代码-C#获取本机网络适配器信息及MAC地址
- WordPress 自定义 login (登录页面)CSS 样式
- [C#1] 12-特性
- HTTP Basic Authentication for RESTFul Service
- [C#2] 4-可空类型、静态类
- jquery 操作css 尺寸
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [未解决]报错: pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in y
- 6.01-re-split_chinese
- Mac上安装tesseract-OCR
- 6.02-news_re
- 6.03-news_xpath2
- 修改mysql密码
- 6.04-news_xpath3
- 6.05-btc
- 7.01-beautiful_soup
- mysql导入导出数据
- 7.01-beautiful_soup2
- 7.01-beautiful_soup3
- CentOS7上安装 JDK8 Hadoop Hive
- 7.02-bs4_btc
- [已解决]报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 80-81