希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。
———————-本段来自百度百科

是插入排序的一种,只不过是效率更高.就能独立成一种算法….作为小菜鸟的我来说:

先给自己定个小目标,比如说写一个属于自己的算法.

拉倒吧,但是我倒是想到了一个把妹的纸牌游戏.
就是用13张不同的牌,其实不管多少张,只要不同数字就ok,然后,和前面的妹子互动排序.你每次拿起来两张牌只需要问谁大谁小,然后就可以用希尔算法排序了.
慎重的说一下,因为会互动很多次才能排序出来,要么少选几张牌(太少了就没有技术含量了),要么,别玩了,你们还有重要的故事要继续—>>>>康忙北鼻…

等我找个毛巾捂脸(✿◡‿◡)

对希尔算法,就是
先知道这个数组的长度n,
所以,它的一半就是n/2,如果不能整除就向上取整;
第一轮:先将数据分成两组,个数是奇数的话,向上取整.
取出来第一组的第一个数,和第二组的第一个数比较
取出来第一组的第二个数,和第二组的第二个数比较
….对应的位置比较
第一轮结束.

第二轮,根据第一轮的一半(可能向上取整了)的一半分组(第二轮不会有向上取整,肯定是偶数,1除外….);
又是第一轮的方法,取出来新的第一组的第一个数,先与第二组的第一个数比较,第一个数字大了就和第二组的第一个数互换位置.
比完了后,又将第二组的第一个数和第三组的第一个数比较.
以此类推….比到最后一个没得比了,
拿就从第一组中取出来第二个数,按照上面的方法开始往下比较…
……
……
直到>>>一半的一半的一半…等于1,就按照顺序,第一个,第二个比较看是否要换位置后,又将第二个与第三个进行比较…
比较完了就拍好序了…

妹子说,这个游戏好无聊,我不玩了.
分手 >>> /(ㄒoㄒ)/~~
程序员,活该你单身.哈哈哈

看到这么多,你肯定会蒙圈的,自己找几张扑克牌模拟一下吧.
如果是在公司的话,那就多输出一下日志就好了,我就是这么干的….哈哈哈

package com.wangjun.sort;import java.util.Arrays;/*** 希尔排序(最小增量排序)* 基本思想:* 算法先将要排序的一组数按某个增量 d(n/2,n为要排序数的个数)分成若干组,* 每组中记录的下标相差 d.对每组中全部元素进行直接插入排序,* 然后再用一个较小的增量(d/2)对它进行分组,* 在每组中再进行直接插入排序。* 当增量减到 1时,进行直接插入排序后,排序完成。* * @author 王俊**/
public class ShellSort {public static void main(String[] args) {int[] a={49,38,65,95,25,53,51}; System.out.println(Arrays.toString(a));System.out.println("=======================");sort(a);}/*** 用希尔算法进行排序* @param a 需要排序的数组*/private static void sort(int[] a) {double d1=a.length;int temp=0;//开始循环while(true){//ceil 则是不小于他的最小整数 //每循环一次,增量就减半向上取整d1=Math.ceil(d1/2);int d=(int)d1;//开始进行遍历数组分割出来的第一部分for(int x=0;x<d;x++){//System.out.println("-------"+d+"--------");for(int i=(x+d);i<a.length;i+=d){int j=(i-d);temp=a[i];System.out.println("i=="+i);System.out.println("temp=="+temp);System.out.println("j=="+j);System.out.println("a[j]=="+a[j]);for(;j>=0 && temp<a[j];j-=d){a[j+d]=a[j];}a[j+d]=temp;}System.out.println(Arrays.toString(a));}//当d==1的时候跳出死循环if(d==1){break;}}//System.out.println(Arrays.toString(a));}}

学会一种算法,我会装逼到底.
老铁,你等着.

Java八大排序算法之希尔排序(最小增量排序)算法相关推荐

  1. java算法----排序----(6)希尔排序(最小增量排序)

    1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...

  2. 【数据结构与算法】二叉树结点最小深度求解算法

    问题描述 给定二叉树,找到其最小深度. 最小深度是沿着从根结点到最近的叶子结点的最短路径的节点数. 分析 递归实现即可: 当前结点为null,表示到达了叶子结点,终止递归,返回0. 当前结点非null ...

  3. Java八大排序详解及源码

    今天介绍一下java中的八大排序,首先看一下这八种排序之间的关系: 排序目录 1. 直接插入排序 1.1基本思想 1.2实例 1.3实现代码 1.4运行结果 2.希尔排序(最小增量排序) 2.1基本思 ...

  4. java排序的例子_Java的8大排序的基本思想及实例解读

    本文主要详解了Java语言的8大排序的基本思想以及实例解读,详细请看下文: 8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经 ...

  5. 9个元素换6次达到排序序列_面试题精选(排序算法类)c/c++版 上篇

    1-1排序算法专题 0 常见排序算法总结 基础排序算法: 冒泡排序.选择排序.插入排序.归并排序.希尔排序.快速排序.堆排序 建议看不懂原理说明或图示时请看代码. 1. 冒泡排序 1.1 基本思想 冒 ...

  6. 减少系统的停顿时间(STW)的增量收集算法 和分区算法

    减少系统的停顿时间有两种算法:一种是增量收集算法,另一种是:分区算法 增量收集算法 1.上述现有的算法,在垃圾回收过程中,应用软件将处于一种stop the world的状态.在Stop the Wo ...

  7. java shell排序_八大排序算法——希尔(shell)排序

    一.动图演示 二.思路分析希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 简单插入 ...

  8. java八大经典排序算法

    排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.我们这里说说八大排序就是内部排序. 当n较大,则应采用 ...

  9. java八大排序算法

    一.概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较 ...

最新文章

  1. MySQL Profiling 的使用
  2. DeepMind发布最新原始音频波形深度生成模型WaveNet,将为TTS带来无数可能
  3. 笔记JavaScript基本概念
  4. linux命令之crontab定时执行任务【转】
  5. 大剑无锋之hadoop默认的数据类型都有哪些?
  6. 【HDU - 5014】Number Sequence(贪心构造)
  7. android智能老人机系统,国产老人机也可以变智能!可运行Android
  8. mysql for loop_MySQL循环语句 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 软件架构(8)---软件架构之架构视图
  10. 十段均衡器开源 android,十段均衡器最美人声(10段均衡器最清晰人声)
  11. 国密算法概述 SM1、SM2、SM3、SM4、SM7、SM9、ZUC
  12. 1990~2003TVB剧集一览表!
  13. 金仓数据库 KingbaseES 插件参考手册 sys_qualstats
  14. 微信小程序全国巡回沙龙杭州站-芋头演讲详细内容及PPT
  15. 知道创宇云防御平台通过2021上半年可信云安全运营中心能力评估
  16. 刷了 1000 多道算法题,一点小小的心得!
  17. 关于objectArx /CAD二次开发中“属性块”操作
  18. Android手机App测试常用功能测试点
  19. 【Ubuntu】Ubuntu16.04的主题和终端美化
  20. nuc977 led 新唐自带gpio linux驱动

热门文章

  1. siege压力测试软件,WEB压力测试工具Siege
  2. Paddle Inference和Paddle Serving
  3. java moco_使用moco单元测试
  4. 大数据:一周电影榜20170609
  5. 数字孪生助力轨道交通安保可视化应用
  6. 柳小葱的力扣之路——树的遍历
  7. [转载]傅里叶分析之掐死教程(完整版)
  8. UltraEdit V18.10.1018 烈火绿色版
  9. 安装Broadcom BCM43142 无线网卡驱动
  10. go学习总结(七)运算符