2.1.19希尔排序的最坏情况。用1到100构造一个含有100个元素的数组并用希尔排序和递增序列1、4 、13 、40对其排序,使比较的次数尽可能多。非常困难的问题。下面只是目前找到的一个比较次数最多的排列。由于没有严格的数学证明,所以不能算是最后的结果。只是阶段性结果的记录。100,92,84,7 ...
分类:
编程语言 时间:
2018-10-27 10:27:23
阅读次数:
211
2.1.11将希尔排序中实时计算递增序列改为预先计算并存储在一个数组中。public class Shell2{ public static void sort(Comparable[] a) { int N=a.length; int h=1; int[] SN=new int[20]; int ...
分类:
编程语言 时间:
2018-10-27 10:26:08
阅读次数:
161
2.1.30几何级数递增序列。通过实验找到一个t,使得对于大小为N=10^6的任意随机数组,使用递增序列1,下取整(t),下取整(t^2),下取整(t^3),下取整(t^4),...的希尔排序的运行时间最短。给出你能找到的三个最佳t值以及相应的递增序列。t=5.31,递增序列:28 149 795 ...
分类:
其他好文 时间:
2018-10-27 10:25:26
阅读次数:
207
2.1.29希尔排序的递增序列。通过实验比较算法2.3中所使用的递增序列和递增序列1,5,19,41,109,209,505,929,2161,3905,8929,16001,36289,64769,146305,260609(这是通过序列9*4^k-9*2^k+1和4^k-3*2^k+1综合得到的 ...
分类:
编程语言 时间:
2018-10-27 10:24:12
阅读次数:
152
2.1.12令希尔排序打印出递增序列的每个元素所带来的比较次数和数组大小的比值。编写一个测试用例对随机Double数组进行希尔排序,验证该值是一个小常数,数组大小按照10的冪次递增,不小于100。public class E2d1d12{ public static int compareTimes ...
分类:
编程语言 时间:
2018-10-27 10:23:44
阅读次数:
101
2.1.27希尔排序的用时是次平方级的。在你的计算机上用SortCompare比较希尔排序和插入排序以及选择排序。测试数组的大小按照2的幂次递增,从128开始。shell排序的倍率是2.5,选择和插入都是在4.public class SortCompare{ public static doubl ...
分类:
编程语言 时间:
2018-10-27 10:22:09
阅读次数:
146
# s = input("请输入一个数:")## # 验证# if int(s) > 999 or int(s) lst[i+1]:# lst[i], lst[i+1] = lst[i+1], lst[i]# print(lst)# 核心思想: 互换# 快排,归并,堆排序, 希尔排序........... ...
分类:
其他好文 时间:
2018-10-27 00:06:51
阅读次数:
126
这几天再看排序,有提到排序稳定性的问题。排序分为稳定(冒泡排序、插入排序、归并排序、基数排序)和不稳定(选择排序、快速排序、希尔排序、堆排序)。 看见过一个面试题问过排序算法稳定性的应用,当时不怎么理解,现在整理出来一些思绪。 给出一组数据(比如学生信息),每个数据都有不同的属性(成绩A,成绩B,等 ...
分类:
编程语言 时间:
2018-10-15 23:26:11
阅读次数:
370
关于排序: 这是排序的一些基本知识,下面是一些不常见的排序的个人理解: 希尔(shell)排序 :即是利用一个dist将整个序列利用二分分组,每次dist/2,其中a[1+dist k](0 ...
分类:
编程语言 时间:
2018-10-12 23:55:22
阅读次数:
208
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是基于插入排序的以下两点性质而提出改进方法 ...
分类:
编程语言 时间:
2018-10-12 21:20:33
阅读次数:
130