数据结构与算法之希尔排序
数据结构与算法之希尔排序
目录
- 希尔排序介绍
- 希尔排序法的示意图
- 代码实现
1. 希尔排序介绍
简单插入排序存在的问题:当然需要插入的数是较小的数时,后移的次数明显增加,对效率有影响。
希尔排序法介绍
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序法基本思想
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止
2. 希尔排序法的示意图
3. 代码实现
public class ShellSort {public static void main(String[] args) {int[] arr= {8,9,1,7,2,3,5,4,6,0};System.out.println("排序前:");System.out.println(Arrays.toString(arr));shellSort(arr);System.out.println("排序后:");System.out.println(Arrays.toString(arr));}//移位法private static void shellSort(int[] arr) {//增量gap,并逐步缩小增量for (int gap = arr.length/2; gap >0 ; gap/=2) {//从第gap个元素,逐个对其所在的组进行插入for (int i = gap; i < arr.length; i++) {int j = i;int temp = arr[j];if (arr[j]< arr[j-gap]){while (j-gap >=0 && temp < arr[j-gap]){//移动arr[j] = arr[j-gap];j -= gap;}//退出while循环后,就给temp找到插入的位置arr[j] = temp;}}}}
}
编译结果
备注:执行8万条数据排序大概需要1s;
数据结构与算法之希尔排序相关推荐
- Java数据结构与算法(六) 希尔排序
###一.希尔排序的产生 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shell于1959年提 ...
- 在路上---学习篇(一)Python 数据结构和算法 (4) --希尔排序、归并排序
独白: 希尔排序是经过优化的插入排序算法,之前所学的排序在空间上都是使用列表本身.而归并排序是利用增加新的空间,来换取时间复杂度的减少.这俩者理念完全不一样,注定造成的所消耗的时间不同以及空间上的不同 ...
- 数据结构与算法之希尔排序及其改进(可视化)
文章目录 1 希尔排序 1.1 简介 1.2 流程 1.3 可视化 1.4 python代码实现 2 改进II:使用不同的分组方式 2.1 思路 2.2 python代码实现 3 改进III:引入插入 ...
- 数据结构与算法之四希尔排序法
希尔排序法的思想是:先取一个小于数组长度n的数d1作为第一个增量,把数组里面的n个数分成d1个组,数组中所有距离为d1的数都放在同一个小组中,分组过程见下图,再在各组里进行直接插入排序,然后取第二个增 ...
- 【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数
本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...
- 数据结构与算法:选择排序
数据结构与算法:选择排序 雪柯 大工生物信息 提笔为写给奋进之人 已关注 8 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国忠 特别备注:本书非原创,但部分内容自己 ...
- python希尔排序的优缺点_Python排序搜索基本算法之希尔排序实例分析
本文实例讲述了Python排序搜索基本算法之希尔排序.分享给大家供大家参考,具体如下: 希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率.希尔排序最关键的是选择步长,本程序选用Kn ...
- JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解
java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...
- Java排序算法之——希尔排序
算法简述 希尔排序也叫作shell排序或缩小增量排序,据说是一个叫D.L.Shell的人发明出来的,顾取名shell排序.这种排序是基于插入排序思想的,也比较适用于数据量大时. 我刚开始看到时候对于插 ...
最新文章
- 奇点、技术失控与技术启示录
- vCenter功能基本介绍
- python3.x获取windows自启动程序列表
- 简单易懂的多线程(通过实现Runnable接口实现多线程)
- Python装饰器的实现原理
- WordPress窗体化侧边栏
- CVPR2019目标分割论文推荐(附论文及代码链接)
- JAVA中toString方法的作用
- HDU2161 Primes
- linux移植简介[MS2]
- 好好工作,别想不开去创业。
- Spring 和 JAVA 的牵绊
- 如何使用python读取excel表的某一列_使用python采集Excel表中某一格数据
- S32K144之SDK版:CAN模块应用
- EPLAN P8部件库 EPLAN P8部件库,包含低压电气 控制系统设计常用品牌型号,全部部件均为本人整理自己创建,可大大提高电气控制行业同仁的工作效率!
- 熊猫直播:成也资本,败也资本
- 超详细的VMware安装openEuler21.09系统
- 微信小程序——选择图片/拍照
- 安卓pdf阅读器_电子书阅读器选哪个好?这篇文章告诉你!
- firebird的数据类型(datatype)
热门文章
- Linux系统下不同机器之间拷贝文件的方法
- 上海网域CEO肖确伟:IDC精细化运营探讨
- 20170626_oracle_数据库设计
- sicp第一章部分习题解答
- Linux 卷管理详解[ pv vg lv] —— 之三
- Visual Media Server – 2 - 下载模块草图
- HDU - 3085 Nightmare Ⅱ(双向bfs)
- java如果属性为空返回其他_后台返回前台数据(实体类)如果存在为空或‘’的属性,如何过滤掉...
- 脚注交叉引用序号不一样_期末干货|蛋黄君的论文不秃头指南
- 从蓝桥杯来谈Fibonacci数列