排序算法Java实现(希尔排序)
算法描述:先将待排序序列的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序。
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实现(希尔排序)相关推荐
- js排序算法详解-希尔排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...
- 希尔排序是一种稳定的排序算法_全面解析十大排序算法之四:希尔排序
点击上方蓝字关注我们吧 1. 十种排序算法的复杂度和稳定性 时间复杂度:一个算法消耗所需要的时间 空间复杂度:运行一个算法所需要的内存时间 稳定性:如一个排列数组:1.4.5.6.4.7. 此时有一对 ...
- 排序算法研究之希尔排序(shell sort)
前面几个小节,我们分别介绍了冒泡排序,插入排序,直接快速排序 ,选择排序本节,我们介绍插入排序的改进版的希尔排序. 希尔排序是1959年,Shell发明的,这是第一个突破O(n2)的排序算法,他与直接 ...
- python实现希尔排序算法_python实现希尔排序算法
希尔排序是插入排序的一种又称"缩小增量排序",是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法 ...
- 排序算法java源代码_排序算法汇总(java实现,附源代码)
整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟悉一下,以后需要的时候就可以直接过来摘抄了. ...
- 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序
第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...
- 算法系列【希尔排序】篇
常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 1. 平方阶 (O(n2)) 排序各类简单排序:直接插入 ...
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera Algorithms Part1&2 本文 ...
- java排序算法大全_各种排序算法的分析及java实现
排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于要找工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究 ...
- 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...
最新文章
- Task03——零基础入门NLP - 基于机器学习的文本分类
- js中window.location.search的用法和作用
- js动态改变下拉菜单内容示例 .
- oracle 新建路径,Linux环境安装Oracle11g(三)——用户、路径创建及配置环境变量
- python抢票_50 个加速包都抢不到车票,还不如这个 Python 抢票神器!
- Netty实战 IM即时通讯系统(五)客户端启动流程
- c++调用cplex求解例子_Java调用cplex求解运输问题
- iphone图片编辑画笔_苹果超强新功能上线!它打开了 iPhone 摄影的新大门
- 职场智慧之如何提升自己在公司的价值
- 分享一个文件上传工具类
- 新版本xx Chrome等主流浏览器将不再允许关闭点击跟踪
- zabbix mysql 脚本路径_Zabbix监控MySQL脚本
- mac linux 蓝牙键盘,还在纠结Mac版键盘?试试KeyRemap4MacBook吧!
- 【报告分享】2021中国移动互联网秋季大报告.pdf(附下载链接)
- phantom.js - HTML To PDF
- 何凯明 Single Image Haze Removal Using Dark Channel Prior
- 【C语言】模块化编程-通俗易懂
- kali安装最新版nessus
- Check It Again: Progressive Visual Question Answeringvia Visual Entailment(SAR)
- 神舟笔记本电脑降低声音
热门文章
- Cacti监控Memcached时Count Stats和Memory/Structures没数据
- 业务逻辑实现方式的讨论:存储过程 good or bad?
- java spring 下载文件_springboot下载文件(使用流)
- 富士相机设置传原图_富士XT4 多位摄影师试用体验报告
- 如何求matlab的in(2.0375),东南大学Matlab作业1.doc
- Spring在Web中的应用
- 关于redis内存分析,内存优化
- JVM学习01—下载编译openjdk源码并进行调试
- linux 防火墙管理
- 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵