文章目录

  • 一、希尔排序介绍
  • 二、图解
  • 三、代码实现

一、希尔排序介绍

基本思想:希尔排序源于插入排序,是对插入排序的改进,将长度为n的数组分成k(k = n/2)组,每组内进行排序,排序完成后将数组分为k (k = (n/2)/2)组,不断重复这个过程直到k变为1.排序完成。
优点:前一次的排序会使后一次排序的数列更有序,使后一次插入排序进行的操作更少。

二、图解

以 arr = {4,6,8,1,9,3,5,2}为例。

arr.length 为8,先分为4组。以颜色区分组。

以插入排序形式进行排序。

分为4/2 = 2 组。

以插入排序形式进行排序。

分为2/2=1组。以插入排序形式进行排序。

结束。

三、代码实现

详细插入排序的分析与代码见链接:link

希尔排序代码:

public class ShellSort {public static void main(String[] args) {int arr[] = {4,6,8,1,9,3,5,2};shellSort(arr);System.out.println(Arrays.toString(arr));}//希尔排序public static void shellSort(int[] arr){int temp = 0;for(int gap = arr.length/2; gap > 0; gap /= 2){//进行分组//对各分组进行插入排序for (int i = gap; i < arr.length; i++) {int j = i;temp = arr[j];if(arr[j] < arr[j - gap]){while(j - gap >= 0 && temp < arr[j - gap]){arr[j] = arr[j-gap];j -= gap;}arr[j] = temp;}}}}
}

希尔排序算法图解分析相关推荐

  1. 算法:两种步长的希尔排序算法

    算法:两种希尔排序算法 1 /** 2 * 希尔排序 3 * 不同步长的算法 4 * @author mackxu 5 * 6 */ 7 class ShellSort { 8 private int ...

  2. JavaScript实现ShellSort希尔排序算法(附完整源码)

    JavaScript实现ShellSort希尔排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 ShellSort.js完整源代码 Comparator.js完整 ...

  3. 排序算法:希尔排序算法实现及分析

    希尔排序算法介绍 希尔排序是D.LShell 与1957年提出来的一种排序算法,在这之前排序算法的时间复杂度都是O(n^2),希尔排序算法是突破这个时间复杂度的第一批算法之一.我们知道直接插入排序算法 ...

  4. 【数据结构----笔记5】插入排序算法之【希尔排序算法】

    /*__________________________________________________________________________________________________ ...

  5. Go 实现希尔排序算法及图解

    耐心和持久胜过激烈和狂热. 哈喽大家好,我是陈明勇,今天分享的内容是使用 Go 实现希尔排序算法.如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有 ...

  6. 希尔排序 最坏时间_希尔排序算法

    希尔排序(Shell's Sort)是插入排序的一种,又称"缩小增量排序",是直接插入排序算法经过改进之后的一种更高效的版本.希尔排序为了加快速度简单地改进了插入排序,交换不相邻的 ...

  7. python实现希尔排序_希尔排序算法的python实现

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. def shellSort(items): inc = len(items) / 2 wh ...

  8. SWUST OJ#1099(希尔排序算法实现)

    目录 题目 代码 小结 题目 代码 #include <iostream> #include <algorithm> using namespace std; int main ...

  9. 希尔排序算法(思路分析) [数据结构][Java]

    希尔排序算法(思路分析) 希尔排序也称之为: 缩小增量排序 希尔排序提出的背景: 因为简单插入排序中存在一些问题( 这里我们以升序排序为例 ): 当我们要待插入的数值比较小时后移的次数明显增多,对效率 ...

最新文章

  1. MongoDB数据库(一:基本操作)
  2. 2014年国内最热门的.NET开源平台
  3. websocket 本地可以服务器断开 springboot linux_SpringBoot+WebSocket实现简单的数据推送...
  4. mini2440-Openwrt启动信息
  5. Python官方文档学习心得(第三篇)
  6. Hadoop(六)搭建分布式HBase集群
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的今日头条新闻网站
  8. 一步步实现SDDC-NSX MGR安装和主机准备
  9. 百度大数据 CMO的新左脑-百度-喻友平
  10. cat >> ipconf << EOF > EOF是什么意思
  11. 四种常见的XML解析方式
  12. 108个Python精选库,看完收获丰富
  13. TensorFlow2.0教程-使用keras训练模型
  14. 计算机叶老师,叶茫 - 教师简历 CV- 武汉大学计算机学院
  15. ORA-00392: log 3 of thread 1 is being cleared, operation not allowed
  16. 服务器要不要设置虚拟内存,服务器要不要设置虚拟内存
  17. 如何有效地进行代码 Review
  18. Excel对不等的合并单元格进行多列数据求和操作
  19. BeanUtils.copyProperties无法复制集合问题解决
  20. picpick截图工具自动保存自动命名设置的方法

热门文章

  1. 2021-07-24
  2. XSS编码问题以及绕过
  3. C/C++ 类库开发库参考【资料整理】
  4. [NPUCTF2020]你好sao啊
  5. IgniteMe debug 寒假逆向生涯(2/100)
  6. NCTF2019 -- PWN部分writeup
  7. 反编译apk文件教程(查看java代码篇)
  8. 分别用顺序表和链表实现队列
  9. Python词频对比并导入CSV文件
  10. 2021算法竞赛入门班第三节课【堆、栈、队列、并查集】等习题