希尔排序

希尔排序的基本思路

在看希尔排序之前建议先看一下简单插入排序
1.我们先设置一个增量gap=length/2
2.将数组从0开始与0+length/2 两两组成一组,这个时候分成了length/2组。
3.将每组中的两个按顺序排序
4.将gap = gap/2,这个时候将数组分成gap/2组,即0,0+gap,0+gap+gap,直到后面没有。
5.然后将每组顺序排列好(一般用简单插入排序)
6.不断的将增量减少,直至增量为0;

代码

public class XiEr {static void xier(int[] arr,int gap) {gap = gap/2;if(gap>0){//是否可以继续和并组for(int i = 0;i < gap;  i++) {for(int j = gap+i ; j <= arr.length-1;j+=gap ){for(int k = j - gap  ; k >=0 ; k -= gap){if(arr[j]<arr[k]){int mid = arr[j];arr[j] = arr[k];arr[k] = mid;}}}}xier(arr,gap);}}public static void main(String[] args){int[] arr = {1,6,7,8,9,10,4,3,2,5,};xier(arr, arr.length);for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

懒癌患者的学习记录之JAVA希尔排序相关推荐

  1. 懒癌患者的学习记录之JAVA冒泡排序代码

    冒泡排序 冒泡排序基本思路: 从第零位开始,依次与后一位进行比较并将较大的往后排较小的往前排.第一次循环就会将最大的值排在最后一位,第二次循环会将第二大的值排在倒数第二位,以此类推. JAVA冒泡排序 ...

  2. 懒癌患者的学习记录之JAVA简单选择排序

    简单选择排序 简单选择排序基本思虑 1.简单来说就是找到数组中最小的放到0,第二小的放到1,以此类推. 2.首先假设第0个值为最小 3.然后从他后面的值找到比他小的,设那个值为最小,以此类推,直到最后 ...

  3. 懒癌患者的学习记录之JAVA简单插入排序

    简单插入排序 简单插入排序的基本思路 1.将数组的前n个数视为一个有序数列(先将第一个数视为有序数列,然后前两个数,再前三个数) 2.将第n+1与前面的所有数进行比较,找到该数所在位置将其插入(其他数 ...

  4. 懒癌患者的学习记录之JAVA快速排序代码

    快速排序 快速排序基本思路 1,取数组中的一个数(一般为最左边的数)作为基准点 2,从数组的最右边开始取值与基准点进行比较,取比基准点小(大)的值 3,从数组的最左边开始取值与基准点进行比较,取比基准 ...

  5. 懒癌患者的学习记录之课程代码旋转木马(3d旋转效果)

    旋转木马3d旋转效果 设计思路 一,用大div将需要旋转的元素包裹起来,该大div称之为舞台 <div id="d"><div class="d1&qu ...

  6. 懒癌患者的学习记录之小知识点

    8bit(位) = 1字节 1024字节 = 1kb 1024kb = 1mb 1024mb = 1GB 1024GB = 1TB 2.html的注释是什么? <!-- 注释说明.... --& ...

  7. java基础案例教程前4章知识点_java学习记录4 Java基础知识点

    java学习记录4 Java基础知识点 1. 注释 单行注释 使用"//"开头,后面是注释的内容 一般在要注释的语句的上面加注释 多行注释 以"/*"开头,以& ...

  8. IDL学习记录和Java调用IDL方法

    IDL学习记录和Java调用IDL方法 2018年02月06日 08:32:02 回首1949 阅读数:385更多 个人分类: 随想 版权声明:乐呵乐呵得了 https://blog.csdn.net ...

  9. gradle exclude_Gradle学习记录020 java工程的测试 part1

    详细学习如何用Gradle测试java工程.第二部分.该学习记录基于Gradle官方网站资料.本篇参考链接如下: https://docs.gradle.org/current/userguide/j ...

最新文章

  1. 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)
  2. corn java 可配置_SpringBoot——目前Java开发最流行的框架(四)
  3. Install Qt5 on Ubuntu 16.04
  4. BootStrap2学习日记16---选项卡内容
  5. word2vec词向量 文本分类实现(TensorFlow版,算法TextCNN)
  6. MySQL覆盖索引:直接从索引查询到了数据
  7. idea打开ini文件以记事本方式修改
  8. ngrx注入到应用类构造函数里的store变量
  9. 汇编烧程序进单片机要什么软件_单片机编程语言及应用技巧解析
  10. R 绘制风洞实验数据曲线
  11. CentOS 7 安装 MySQL 5.6
  12. 世界互联网大会乌镇峰会:14项世界互联网领先科技成果发布
  13. OpenCL入门程序
  14. mugen linux主程序,MUGEN主程序
  15. Protel常用封装库
  16. excel中去重计数_在Excel中计数
  17. 桌面虚拟化(VDI)的概述
  18. c语言圆角矩形实现,MFC怎么绘制一个圆角矩形
  19. js每日一题(11)
  20. Android选择本地视频和照片上传到服务器

热门文章

  1. 阿里构建“安全”的流量体系 微博成最大的淘宝客
  2. 艾司博讯:拼多多商品描述怎么写好?以下方法
  3. mysql 矩阵运算_MySQL实现算法:矩阵快速幂
  4. UTips校园资讯助手用户体验报告
  5. 需要一个前端小哥哥或小姐姐 救救孩子吧 T_T
  6. [HZWER NOIP模拟题][杂题][防骗题]数列
  7. apache friends - xampp
  8. linux解压jar
  9. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第十一章 攻击性取证
  10. c++智能指针用法详解