2019独角兽企业重金招聘Python工程师标准>>>

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序, 然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。

public class ShellSort {/*** 原理:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的* 下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,* 在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。** @author 阿信sxq-2015年7月16日** @param args*/public static void main(String[] args) {int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54,56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };int d = a.length;int temp = 0;while (true) {d = d / 2;for (int x = 0; x < d; x++) {//对每一个组进行直接插入排序for (int i = x + d; i < a.length; i += d) {int j = i - d;temp = a[i];for (; j >= 0 && temp < a[j]; j -= d) {a[j + d] = a[j];}a[j + d] = temp;}}if (d == 1) {break;}}System.out.println(Arrays.toString(a));}}

转载于:https://my.oschina.net/songxinqiang/blog/669906

基本算法--希尔排序相关推荐

  1. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

  2. python排序算法——希尔排序(附代码)

    python排序算法--希尔排序 文章目录 python排序算法--希尔排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法 ...

  3. 十大经典排序算法-希尔排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  4. 排序算法——希尔排序(缩小增量排序)

    1.希尔排序思想: 希尔排序就是把数据分成若干份子序列,从第一个元素开始,和每间隔为n的元素分成一个子序列,对每一份子序列实行直接插入排序,然后合并成一个新序列,继续对新序列以间隔m分成若干份,继续重 ...

  5. 希尔排序是一种稳定的排序算法_十大经典排序算法——希尔排序

    vs code ppt c++/java 目录 1.1.排序分类 1.2.排序的定义: 对一序列对象根据某个关键字进行排序. 1.3.术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的 ...

  6. 希尔排序是一种稳定的排序算法_排序算法—希尔排序

    希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n ...

  7. ds排序--希尔排序_排序算法 - 希尔排序分析及优化

    希尔排序 1 算法思想 希尔排序,也被称为递减增量排序,是简单插入排序的一种改进版本. 在插入排序中,如果待排序列中的某个元素,距离有序数列中待插入位置非常远,就需要比较很多次才可以到达插入位置,这是 ...

  8. 排序算法——希尔排序的图解、代码实现以及时间复杂度分析

    希尔排序(Shellsort) 希尔排序是冲破二次时间屏障的第一批算法之一. 希尔排序通过比较相距一定间隔的元素来工作:各躺比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止.由 ...

  9. 排序算法----希尔排序

    1. 希尔排序:1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩小增量排序. 2. 希尔排序的 ...

  10. 排序算法——希尔排序

    希尔排序是1959 年由D.L.Shell提出来的,相对直接排序有较大的改进.希尔排序又叫缩小增量排序 基本思想 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录&q ...

最新文章

  1. 1136 A Delayed Palindrome 需再做
  2. linux环境变量配置的方法,Linux环境变量配置方法
  3. XCode 快捷键, MAC 快捷键
  4. [蓝桥杯][基础练习VIP]完美的代价(贪心)
  5. 脚本语言+文档对象模型基于浏览器客户端的编程
  6. python中的列表和元组_浅析Python中的列表和元组
  7. python实现图像检索的三种(直方图/OpenCV/哈希法)
  8. 当你不能回答别人的提问时怎么办
  9. C语言实例--百钱买百鸡
  10. 安防蓝海带来亿万商机 汉王人脸通掀起产业风暴
  11. android固定标题表格,Android使用TableLayout之固定表头(标题栏)
  12. steam 集换式卡牌挂卡软件 ASF Linux服务器搭建
  13. 简述多媒体计算机的特点,多媒体课件的特点和作用
  14. 教你免费使用论文检索网,轻松下载
  15. MODTRAN辐射传输模型使用笔记
  16. 个人能用的短信平台有哪些?看这一篇就够了
  17. Python 于 webgame 的应用(上)
  18. js通过class获取元素
  19. OCI 与容器镜像构建
  20. 简单的banner代码,用css实现滚动banner焦点图, 不用jq也能滚动banner

热门文章

  1. 程序员面试什么最重要?
  2. How to change the status of Prepayment invoice
  3. 通过反射获得引用程序集信息
  4. SQL注入的几种实用办法
  5. C#类型与SQLSEVER类型对比
  6. w5100 网上资料整理
  7. vitess源码阅读笔记cache系列之用go实现通用资源池
  8. 妈的,混蛋 wfopen_s 函数
  9. 静态资源部署到服务器不能访问
  10. php调用不存在的方法,php如何调用不存在的方法