算法描述:先将待排序序列的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序。

package sorting;/*** 希尔排序 * 平均O(nlogn),最坏O(nlogn);空间复杂度O(1);不稳定;较复杂* @author zeng**/
public class ShellSort {public static void shellSort(int[] a) {int n = a.length;int d = n / 2;while (d > 0) {for (int i = d; i < n; i++) {int j = i - d;while (j >= 0 && a[j] > a[j + d]) {int tmp = a[j];a[j] = a[j + d];a[j + d] = tmp;j = j - d;}}d = d / 2;}}public static void main(String[] args) {int[] b = { 49, 38, 65, 97, 76, 13, 27, 50 };shellSort(b);for (int i : b)System.out.print(i + " ");}
}

  

转载于:https://www.cnblogs.com/zengzhihua/p/4456734.html

排序算法Java实现(希尔排序)相关推荐

  1. js排序算法详解-希尔排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...

  2. 希尔排序是一种稳定的排序算法_全面解析十大排序算法之四:希尔排序

    点击上方蓝字关注我们吧 1. 十种排序算法的复杂度和稳定性 时间复杂度:一个算法消耗所需要的时间 空间复杂度:运行一个算法所需要的内存时间 稳定性:如一个排列数组:1.4.5.6.4.7. 此时有一对 ...

  3. 排序算法研究之希尔排序(shell sort)

    前面几个小节,我们分别介绍了冒泡排序,插入排序,直接快速排序 ,选择排序本节,我们介绍插入排序的改进版的希尔排序. 希尔排序是1959年,Shell发明的,这是第一个突破O(n2)的排序算法,他与直接 ...

  4. python实现希尔排序算法_python实现希尔排序算法

    希尔排序是插入排序的一种又称"缩小增量排序",是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法 ...

  5. 排序算法java源代码_排序算法汇总(java实现,附源代码)

    整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟悉一下,以后需要的时候就可以直接过来摘抄了. ...

  6. 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序

    第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...

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

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

  8. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  9. java排序算法大全_各种排序算法的分析及java实现

    排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于要找工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究 ...

  10. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

最新文章

  1. Task03——零基础入门NLP - 基于机器学习的文本分类
  2. js中window.location.search的用法和作用
  3. js动态改变下拉菜单内容示例 .
  4. oracle 新建路径,Linux环境安装Oracle11g(三)——用户、路径创建及配置环境变量
  5. python抢票_50 个加速包都抢不到车票,还不如这个 Python 抢票神器!
  6. Netty实战 IM即时通讯系统(五)客户端启动流程
  7. c++调用cplex求解例子_Java调用cplex求解运输问题
  8. iphone图片编辑画笔_苹果超强新功能上线!它打开了 iPhone 摄影的新大门
  9. 职场智慧之如何提升自己在公司的价值
  10. 分享一个文件上传工具类
  11. 新版本xx Chrome等主流浏览器将不再允许关闭点击跟踪
  12. zabbix mysql 脚本路径_Zabbix监控MySQL脚本
  13. mac linux 蓝牙键盘,还在纠结Mac版键盘?试试KeyRemap4MacBook吧!
  14. 【报告分享】2021中国移动互联网秋季大报告.pdf(附下载链接)
  15. phantom.js - HTML To PDF
  16. 何凯明 Single Image Haze Removal Using Dark Channel Prior
  17. 【C语言】模块化编程-通俗易懂
  18. kali安装最新版nessus
  19. Check It Again: Progressive Visual Question Answeringvia Visual Entailment(SAR)
  20. 神舟笔记本电脑降低声音

热门文章

  1. Cacti监控Memcached时Count Stats和Memory/Structures没数据
  2. 业务逻辑实现方式的讨论:存储过程 good or bad?
  3. java spring 下载文件_springboot下载文件(使用流)
  4. 富士相机设置传原图_富士XT4 多位摄影师试用体验报告
  5. 如何求matlab的in(2.0375),东南大学Matlab作业1.doc
  6. Spring在Web中的应用
  7. 关于redis内存分析,内存优化
  8. JVM学习01—下载编译openjdk源码并进行调试
  9. linux 防火墙管理
  10. 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵