java 算法基础之七希尔排序

希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。

这个0

位置移动到第一个,这样就会浪费很大,使用这个改进的希尔排序可以实现数据元素的大跨度的移动。也就是这个算法的优越之处。

希尔排序过程图解:

数组:45,20,80,40,26,58,66,70

d=5时   分组为:45,58

20,66

80,70

排完后为: 45,20,70,40,26,58,66,80

d=3时 分组为:45,40,66

20,26,80

70,58

40,66

26,80

排完后为:40,20,58,45,26,70,66,80

d=1时 分组为:40,20,58,45,26,70,66,80

排序后直接得到结果:

20 26 40 45 58 66 70 80

实现的代码如下:

class Shell { public void shell_sort(int [] arrays){ for(int d=5;d>0;d=d-2){ for(int c=0;c0;j=j-d){ if(j运行结果:

---------- java ----------45 20 70 40 26 58 66 80 40 20 58 45 26 70 66 80 20 26 40 45 58 66 70 80 输出完成 (耗时 0 秒) - 正常终止

找一个博客做自己的女朋友,不管你跟她说什么她都帮你记录,这是多么幸福的一件事啊。如果有女生能做到这点,赶尽娶回家吧!

希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。

这个0

位置移动到第一个,这样就会浪费很大,使用这个改进的希尔排序可以实现数据元素的大跨度的移动。也就是这个算法的优越之处。

希尔排序过程图解:

数组:45,20,80,40,26,58,66,70

d=5时   分组为:45,58

20,66

80,70

排完后为: 45,20,70,40,26,58,66,80

d=3时 分组为:45,40,66

20,26,80

70,58

40,66

26,80

排完后为:40,20,58,45,26,70,66,80

d=1时 分组为:40,20,58,45,26,70,66,80

排序后直接得到结果:

20 26 40 45 58 66 70 80

实现的代码如下:

class Shell { public void shell_sort(int [] arrays){ for(int d=5;d>0;d=d-2){ for(int c=0;c0;j=j-d){ if(j运行结果:

---------- java ----------45 20 70 40 26 58 66 80 40 20 58 45 26 70 66 80 20 26 40 45 58 66 70 80 输出完成 (耗时 0 秒) - 正常终止

找一个博客做自己的女朋友,不管你跟她说什么她都帮你记录,这是多么幸福的一件事啊。如果有女生能做到这点,赶尽娶回家吧!


相关内容

  • 数据结构排序毕业论文
  • 内容摘要 ..................................................................................................................................... 3 关键字 ..... ...

  • 2012软件设计师大纲
  • 考试科目1:计算机与软件工程知识 1. 计算机科学基础知识 1.1数制及其转换  二进制.八进制.十进制和十六进制等常用数制及其相互转换 (Ⅱ) 1.2 计算机内数据的表示  数的表示  带符号定点数据(纯整数和纯小数)的原码.反码.补码和移码表示 (Ⅱ)  浮点数(实数)的表示(Ⅱ)  ...

  • 排序算法时间复杂度比较
  • 排序算法比较 主要内容: 1)利用随机函数产生 10000个随机整数,对这些数进行多种方法 排序. 2)至少采用4种方法实现上述问题求解(可采用的方法有插入排序.希尔排序.起泡排序.快速排序.选择排序.堆排序.归并排序),并把排序后的结功能果保存在不同的文件里. 3)给出该排序算法统计每一种排序方法 ...

  • 校园招聘面试心得与总结
  • 校园招聘面试心得与总结---BAT .网易.蘑菇街 2015年12月1日 | 1370人围观 | 0人评论 之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇诚意之作,希望能给未来找工作的人一点指引和总结, 也希望能使大家少走点弯路 ...

  • 实验四题目1
  • 数据结构实验报告 实验名称: 实验四--题目一 学生姓名: 唐文旭 班 级:2013211118 班内序号: 09 学 号: 2013210524 日 期: 2015年1月5日 1.实验要求 使用简单数组实现下面各种排序算法,并进行比较. 排序算法: 1.插入排序 2.希尔排序 3.冒泡排序 4.快 ...

  • [数据结构]教学大纲
  • <数据结构>教学大纲 Data Structure 课程编号:J6110G0003 课程性质:学科基础课程 适用专业:计算机科学与技术.网络工程.数字媒体技术 先行课:计算机科学导论.离散数学.高级语言程序设计: 后续课:无 . 学分数:5 主讲教师:任燕.王命延.冯豫华.周石林.王玮立 ...

  • 数据结构中几种常见的排序算法之比较
  • 几种常见的排序算法之比较 2010-06-2014:04摘要:排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的不同.在研究学关键词: 一.引言 排序算法,是计算机编程中的一个常见问题.在日常的数据处理中,面对纷繁我们也许有 ...

  • 排序算法---归并排序
  • 归并排序中的"归并"的意思是将两个或者两个以上的有序表组合成一个新的有序表.他的实现无论是顺序存储结构还是链表结构,都可以在O(m n)的时间级上实现. 复杂度: 时间复杂度:O(nlogn) 空间复杂度:O(n) 用途: 1.排序(速度仅次于快速排序,但较稳定) 2.求逆序对数 ...

  • 贪心算法背包问题java代码
  • /*贪心算法求得的是局部最优解,而不是整体最优解 *归纳起来就是先求出每个物品的平均价值(也就是价值/重量); *然后再将得出来的每个物品的平均价值降序排序,并记录各自在数组中的位置(即下标) *将排序后的物品重量和价值分别用新数组来存储 *根据背包容量来判断,一件一件装入背包,直到装满为止,在这个 ...