排序算法 -- (二)希尔排序
来源:互联网 发布:黑暗之魂3男号捏脸数据 编辑:程序博客网 时间:2024/06/05 01:50
希尔排序
用法:对于直接插入排序问题,数据量巨大时
针对直接插入排序的下效率问题,有人对次进行了改进与升级,这就是现在的希尔排序。
希尔排序,也称 递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
1、原理
1、将数的个数设为n,取奇数k=n/2,将下标差值为k的书分为一组,构成有序序列。2、再取k=k/2 ,将下标差值为k的书分为一组,构成有序序列。3、重复第二步,直到k=1执行简单插入排序。
2、实现
1、首先确定分的组数。2、然后对组中元素进行插入排序。3、然后将length/2,重复1,2步,直到length=0为止。
3、代码
public class SheelSort { /* 希尔排序 */ public static void sort(int[] a) { int len = a.length; // 单独把数组长度拿出来,提高效率 while (len != 0) { len = len / 2; for (int i = 0; i < len; i++) {// 分组 for (int j = i + len; j < a.length; j += len) {// 元素从第二个开始 int k = j - len;// k为有序序列最后一位的位数 int temp = a[j];// 要插入的元素 for(;k>=0&&temp<a[k];k-=len){ // 从后往前遍历 a[k+len]=a[k]; } a[k + len] = temp; OutNums.print2(j+" -- "+i, a); } } } }}
4、测试结果
测试类:
控制台输出:
输出工具类:OutNums.java
阅读全文
1 0
- 排序算法(二):希尔排序
- 八大排序算法(二)希尔排序
- 排序算法(二):希尔排序
- 排序算法 -- (二)希尔排序
- 排序算法(二)---- 希尔排序
- 排序算法(二)希尔排序
- 排序算法(二)希尔排序
- 排序算法二(归并排序、快速排序、希尔排序)
- 排序算法(二):希尔排序(最小增量排序)
- 常见排序算法整理(二)----希尔排序,选择排序
- 八大排序算法之(二)插入排序 希尔排序
- 【十六】排序算法(二)--希尔排序算法
- 排序(二):希尔排序
- 排序(二)----希尔排序
- 排序:希尔排序(算法)
- C语言--------排序算法---------希尔排序(二)
- 八大排序算法之二希尔排序(C语言)
- 排序算法(二)——希尔排序
- 数据库 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databas解决方法
- HTMLReporter TestNG 配置
- django1.10.3=安装
- sql两种创建临时表 验证存在于删除
- CentOS设置服务开机启动的方法
- 排序算法 -- (二)希尔排序
- solr的使用
- 记录一次webpack2的项目架构
- HTTP协议的8种请求类型介绍
- TCP进阶基本功---tcp挥手状态
- 数据描述预备,几个概念
- js html dom
- TypeScript 类型推论整理
- 基于nodeJS的前端开发到底啥意思?