1.java代码 /** * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┃ * ┃ ┻ ┃ * ┃ ┃ * ┗━┓ ┏━┛ * ┃ ┃神兽保佑 * ┃ ┃代码无BUG! * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ...
分类:
编程语言 时间:
2019-02-19 17:39:45
阅读次数:
230
//插入法排序/*first~有序序列的插入算法希尔排序】: 又称缩小增量排序,是对直接插入排序的优化 , 如下图所示 , 以3为间隔 , 每次进行排序 , 使数组接近于有序 ,这样就能减少元素后移的次数 , 这样在大量数据排序时 , 效率会大大提高 ; 在下面的测试中会有明显的差别 *///将任意 ...
分类:
编程语言 时间:
2019-02-19 00:58:56
阅读次数:
172
十大经典排序算法 主题: 关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。 O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序。 线性阶 (O(n)) 排序 基数排 ...
分类:
编程语言 时间:
2019-02-18 01:24:12
阅读次数:
199
利用Java进行希尔排序(元素中有0会有问题),步长经过调试length/2+1最合适。 ...
分类:
编程语言 时间:
2019-02-06 19:42:53
阅读次数:
145
1、冒泡排序:每次将最大或最小值通过交换放到数组前面。 2、插入排序: 由n-1趟排序组成,对于从P=1到P=n-1趟排序,每次排序保证从0到P之间的元素为已排序状态(即0~P-1是排好序的)。 3、希尔排序: 通过比较相距一定间隔的元素来工作,这些间距序列h1,h2,……,hn又称为增量序列,相当 ...
分类:
编程语言 时间:
2019-02-02 14:28:41
阅读次数:
227
在插入排序中,我们假设在即将进行排序的元素的左侧所有的元素已经是有序的,所以我们会将该元素与它左侧的元素逐个比较,如果左侧的元素大于该元素,则左侧的元素右移。然后,该元素继续与左侧的下一个元素比较。现在有一个问题:极端情况下,刚开始很小的元素放到了最右侧,那么它左侧所有的元素都要向右移动复制一次,这 ...
分类:
编程语言 时间:
2019-01-28 16:05:02
阅读次数:
141
算法名称 归类 英文名 时间复杂度 优点 缺点 和别的算法的比较 我常用的 直接插入排序 插入排序的一种 StraightInsectionSort 稳定 A 希尔排序 插入排序的一种 ShellSort 平均效率是O(nlogn) 适合于数据量在5000以下 不稳定 (即相等的数,在排序后相对位置 ...
分类:
编程语言 时间:
2019-01-28 10:52:37
阅读次数:
208
时间复杂度、空间复杂度、稳定性比较 | 排序方法 | 平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 | | | | | | | | | 插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 | | 希尔排序 | O(n log(n))~O(n^2) | ...
分类:
编程语言 时间:
2019-01-25 13:02:40
阅读次数:
224
优先队列 集合性质的数据类型离不开插入删除这两操作,主要区别就在于删除的时候删哪个,像栈删最晚插入的,队列删最早插入的,随机队列就随便删,而优先队列删除当前集合里最大(或最小)的元素。优先队列有很多应用,举几个见过的像:数据压缩的哈夫曼编码、图搜索中的 Dijkstra 算法和 Prim 算法、人工 ...
分类:
其他好文 时间:
2019-01-22 18:32:47
阅读次数:
227
希尔排序 我们先在方法中找出它最大的间隔h, 第一趟,将要排序的一组数按增量h分成若干组,每组中记录的下标相差h, 对每组中全部元素进行排序。 第二趟,间隔为h = (h-1)/3,以后的每趟间隔都是h = (h-1)/3, 直到间隔变为1,整个要排序的数被分成一组,排序完成。 一般的初次取序列的一 ...
分类:
编程语言 时间:
2019-01-20 20:05:09
阅读次数:
242