1 package log;
 2
 3 public class Test4 {
 4
 5     /**
 6      * java算法---希尔排序(最小增量排序)
 7      *
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         // 需要排序的数组
12         int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 };
13         double d1 = arr.length;
14         int temp = 0;
15         // 循环输出该数组内容
16         System.out.println("排序之前:");
17         for (int a : arr) {
18             System.out.print(a + "\t");
19         }
20         System.out.println();
21
22         while (true) {
23             d1 = Math.ceil(d1 / 2) % 2 == 0 ? Math.floor(d1 / 2) : Math.ceil(d1 / 2);
24             int d = (int) d1;
25             for (int x = 0; x < d; x++) {
26                 for (int i = x + d; i < arr.length; i += d) {
27                     int j = i - d;
28                     temp = arr[i];
29                     for (; j >= 0 && temp < arr[j]; j -= d) {
30                         arr[j + d] = arr[j];
31                     }
32                     arr[j + d] = temp;
33                 }
34             }
35             if (d == 1) {
36                 break;
37             }
38
39         }
40
41         // 循环输出该数组内容
42         System.out.println("排序之后:");
43         for (int a : arr) {
44             System.out.print(a + "\t");
45         }
46         System.out.println();
47
48     }
49
50 }

转载于:https://www.cnblogs.com/javallh/p/8762412.html

java算法----排序----(6)希尔排序(最小增量排序)相关推荐

  1. Java八大排序算法之希尔排序(最小增量排序)算法

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

  2. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  3. 算法系列【希尔排序】篇

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 1.     平方阶 (O(n2)) 排序各类简单排序:直接插入 ...

  4. Java数据结构——直接插入排序+希尔排序+冒泡排序

    文章目录 一.插入排序 (一).什么是插入排序 (二).图例 (三).Java代码 二.希尔排序 (一).什么是希尔排序 (二).图例 (三).Java代码 三.冒泡排序 (一).什么是冒泡排序 (二 ...

  5. java程序员必知的 8大排序

    下载了文档自己截图存留 8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中, ...

  6. python中用def实现自动排序_用 python 实现各种排序算法

    常见集中排序的算法 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元 ...

  7. 蓝桥杯:算法很美 笔记 3.查找和排序(Python实现)

    1.分治法介绍以及关键点解析 分治法(divide and conquer, D&C)∶将原问题划分成若干个规模较小而结构与原问题一致的子问题﹔递归地解决这些子问题,然后再合并其结果,就得到原 ...

  8. 希尔排序的java算法_Java算法系列篇 【希尔排序】

    什么? 搞Java不会算法? 由于个人兴趣原因以及工作所需,最近了解Java算法的相关案例 及时分享 感兴趣的欢迎交流 希尔排序 描述: 基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直 ...

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

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

最新文章

  1. Asp.net Ajax框架教程
  2. Spring Boot 配置文件的加载优先级
  3. No.6 建立swap分区、进程、安装软件包的方法(rpm,yum,编译)
  4. 深入解读无服务器架构下的数据库
  5. freebsd mysql utf8_FreeBSD下安装mysql基本步骤
  6. 《那些年啊,那些事——一个程序员的奋斗史》——49
  7. 架构设计--逻辑层 vs 物理层
  8. python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)
  9. 音视频即时通讯开发功能介绍
  10. Abaqus简单部件受力分析
  11. 富士通Fujitsu DPK2181H Pro 打印机驱动
  12. 注塑行业MES实施方案
  13. 更换IP地址方式简介。
  14. 玩转华为ENSP模拟器系列 | 配置普通NTP对等体模式示例
  15. linux启动流程及自定义gurb
  16. 搜索市场变局:话说云云
  17. 生成带参数的微信二维码
  18. 晓宇姐姐带你软硬结合,感受下ADC DMA采集多路电压电流
  19. 1024程序员吐槽大会,看完头发都笑掉了
  20. 解决M4以上版本每次重启生成 SpringAutoDeployment 记录的问题

热门文章

  1. 【C#】ASP.NET网页中添加单点登录功能
  2. Andriod使用webview控件往APP里内嵌网页
  3. Rhel6-heartbeat配置文档
  4. 转 mac svn用法
  5. 浅析SQL Server数据修复命令DBCC的使用
  6. 用Javascript修正12个常见的浏览器问题
  7. alpine 交互sh_在这个免费的交互式教程中学习Alpine JS
  8. 黑盒测试方法之等价类划分法
  9. LeetCode Python题解(二)----排序
  10. AGC002[BCDEF]题解