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排序——插入排序相关推荐

  1. Java排序算法——插入排序(Insertion Sort)

    之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...

  2. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  3. Java插空排序,Java直接插入排序法详解

    前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...

  4. java排序算法(插入排序,冒泡排序,选择排序)

    java排序算法(插入排序,冒泡排序,选择排序) 先了解原理,然后自己跟着敲一下,加深印象 CMD编译命令:javac -encoding utf-8 SortList.java && ...

  5. 看动画学算法之:排序-插入排序

    文章目录 简介 插入排序的例子 插入排序的java程序 插入排序的时间复杂度 简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组. 这个算法就叫做插入排序. 插入排序 ...

  6. JAVA 排序工具类

    提供了以下排序: 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 桶排序 堆排序 package com.xingej.algorithm.sort;import java.util.Ar ...

  7. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  8. java中插入排序_Java中的插入排序

    java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...

  9. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

最新文章

  1. C++中Reference与指针(Pointer)的使用对比
  2. php控制器面向对象编程,php面向对象编程
  3. 洛谷P1144-最短路计算【日常最短路,日常图论,SPFA】
  4. 学习笔记(23):Python网络编程并发编程-开启线程的两种方式
  5. linux命令行sip电话,基于Linux和MiniGUI的SIP电话终端设计
  6. Java使用math3实现矩阵行求和(求行均值)
  7. nssstring 转换大小写
  8. 4-1-getOutputStream()或getWriter()发送响应消息体及分析为什么不能同时使用
  9. python哪些系统可以运行_python可以检测它在哪个操作系统下运行吗?
  10. web打印组件康虎云报表与odoo整合示例
  11. 开源字体_开源字体的前5大资源
  12. Arcgis拓扑检查
  13. DLL load failed while importing _imaging
  14. Hbase Region的切分与合并【原理分析】
  15. fastapi服务部署
  16. kafka(三)kafka steaming high-level api
  17. Elasticsearch常见搜索方法的实现
  18. 工业相机标定(张正友标定法)
  19. 俩人同样写代码,我拿七千他咋五万八...(文末送书)
  20. 服务器如何发挥最好的性能,一篇文章告诉你怎么发挥固态硬盘最大性能

热门文章

  1. 看BAT技术面试官如何挑选Java程序员
  2. CentOS 7.0关闭默认防火墙启用iptables防火墙
  3. linux 死锁介绍与简单分析
  4. python---骰子游戏
  5. ubuntu14 安装JDK
  6. JQuery 获取自身的HTml代码
  7. JavaFX打包工具(javafxpackager)
  8. 【实践】WCF 传输安全 1 前期准备之证书制作
  9. DBScript:轻量级ORM
  10. web页,如何按回车获得焦点,触发web控件事件..?