java排序——插入排序
2019独角兽企业重金招聘Python工程师标准>>>
package jxau.blueDot.lyx;/*** * @author lyx* @下午6:42:21* @TODO:* 希尔排序*//*** * 把待排序的数据元素分成若干个小组,对同一小组内的数据元素用直接插入法排序,* 小组的个数逐次缩小,当完成了所有数据元素都在一个组内排序完成后结束。希尔排序* 又被称为 缩小增量排序。* 希尔排序是在分组概念上的直接插入排序,即在不断缩小组的个数时把原各小组的* 数据元素插入到新组中的合适位置上。*//*** 第一次增量为6* 初始关键字序列* 65 34 25 87 12 38 56 46 14 77 92 23* —— —— * 第一次希尔排序结果* 56 34 14 77 12 23 65 46 34 87 92 38* * 第二次增量为3* 第二次希尔排序结果* 56 12 14 65 34 23 77 46 25 87 92 38* * 第三次增量为1* 第三次希尔排序结果* 12 14 23 25 34 38 46 56 65 77 87 92* *//*** * 算法时间复杂度* O(n(logn)^2) */public class ShellSort {public static int count = 0; public static void shellSort(int[] data) { // 计算出最大的h值 (相当于增量的值)/*** 常用的h序列由Knuth提出,该序列从1开始,通过如下公式产生:* h = 3 * h +1* 反过来程序需要反向计算h序列,应该使用* h=(h-1)/3*/int h = 1; while (h <= data.length / 3) { h = h * 3 + 1; } while (h > 0) { for (int i = h; i < data.length; i += h) { if (data[i] < data[i - h]) { int tmp = data[i]; int j = i - h; while (j >= 0 && data[j] > tmp) { data[j + h] = data[j]; j -= h; } data[j + h] = tmp; print(data); } } // 计算出下一个h值 h = (h - 1) / 3; } } public static void print(int[] data) { for (int i = 0; i < data.length; i++) { System.out.print(data[i] + "\t"); } System.out.println(); }
}
转载于:https://my.oschina.net/liyixiangBlog/blog/266061
java排序——插入排序相关推荐
- Java排序算法——插入排序(Insertion Sort)
之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...
- c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
- Java插空排序,Java直接插入排序法详解
前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...
- java排序算法(插入排序,冒泡排序,选择排序)
java排序算法(插入排序,冒泡排序,选择排序) 先了解原理,然后自己跟着敲一下,加深印象 CMD编译命令:javac -encoding utf-8 SortList.java && ...
- 看动画学算法之:排序-插入排序
文章目录 简介 插入排序的例子 插入排序的java程序 插入排序的时间复杂度 简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组. 这个算法就叫做插入排序. 插入排序 ...
- JAVA 排序工具类
提供了以下排序: 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 桶排序 堆排序 package com.xingej.algorithm.sort;import java.util.Ar ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- java中插入排序_Java中的插入排序
java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...
- 【排序算法】冒泡排序|选择排序|插入排序|希尔排序
文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序 第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...
最新文章
- C++中Reference与指针(Pointer)的使用对比
- php控制器面向对象编程,php面向对象编程
- 洛谷P1144-最短路计算【日常最短路,日常图论,SPFA】
- 学习笔记(23):Python网络编程并发编程-开启线程的两种方式
- linux命令行sip电话,基于Linux和MiniGUI的SIP电话终端设计
- Java使用math3实现矩阵行求和(求行均值)
- nssstring 转换大小写
- 4-1-getOutputStream()或getWriter()发送响应消息体及分析为什么不能同时使用
- python哪些系统可以运行_python可以检测它在哪个操作系统下运行吗?
- web打印组件康虎云报表与odoo整合示例
- 开源字体_开源字体的前5大资源
- Arcgis拓扑检查
- DLL load failed while importing _imaging
- Hbase Region的切分与合并【原理分析】
- fastapi服务部署
- kafka(三)kafka steaming high-level api
- Elasticsearch常见搜索方法的实现
- 工业相机标定(张正友标定法)
- 俩人同样写代码,我拿七千他咋五万八...(文末送书)
- 服务器如何发挥最好的性能,一篇文章告诉你怎么发挥固态硬盘最大性能