一、直接插入排序 往有序的数组中快速插入一个新的元素。 基本思想:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过为止。 二、希尔排序 希尔排序又称递减增量排序算法。希尔排序是先把待排序的记录序列分割成若干子序列,分别进行直接插入排序,待 ...
分类:
编程语言 时间:
2019-03-08 19:43:18
阅读次数:
216
? 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。希尔排序适合数据量中等情况,几十个到几万个。 ? 网上看了好久才彻底明白希尔排序是什 ...
分类:
编程语言 时间:
2019-02-27 17:44:36
阅读次数:
221
//插入法排序/*first~有序序列的插入算法希尔排序】: 又称缩小增量排序,是对直接插入排序的优化 , 如下图所示 , 以3为间隔 , 每次进行排序 , 使数组接近于有序 ,这样就能减少元素后移的次数 , 这样在大量数据排序时 , 效率会大大提高 ; 在下面的测试中会有明显的差别 *///将任意 ...
分类:
编程语言 时间:
2019-02-19 00:58:56
阅读次数:
172
一个排序算法可视化的软件,很魔性。 链接:https://pan.baidu.com/s/1hCoMku7UL7IN4hIdYTsuJg 提取码:4y4v 1.冒泡排序 void bubbleSort(int *a, int n) { for (int i = 0; i < n; i++) { fo ...
分类:
编程语言 时间:
2019-01-29 14:52:54
阅读次数:
163
基于比较的排序: 基础排序: 冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低——掌握swap。 选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值。 插入排序:虽然平均效率低,但是在序列基本有序时,它很快,所以也有其适用范围。 希尔排序(缩小增量排序):是插排的改良,对空间思维 ...
分类:
编程语言 时间:
2019-01-18 10:52:34
阅读次数:
252
插入排序 1、 直接插入排序 ( ) 在已经排好的队列中插入新的元素 流程: 复杂度: 时间复杂度: 空间复杂度: 代码实现(JAVA) public static void main(String[] args) { int[] arr = new int[]{32, 34, 55, 12, 32 ...
分类:
编程语言 时间:
2018-12-21 18:41:15
阅读次数:
186
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进 ...
分类:
编程语言 时间:
2018-12-03 11:58:00
阅读次数:
181
一.希尔排序shellsort也称缩小增量排序,是对插入排序算法的改进,其工作原理是定义一个间隔序列来表示排序过程中进行比较的元素之间有多远的间隔,每次将具有相同间隔的数分为一组,进行插入排序,大部分场景中,间隔是可以提前定义好的,也可以动态生成。在较大的数据集上,希尔排序对于插排的优化效果是非常明显的。./***希尔排序示例代码*/functionshellSort(gaps,arr){for(
分类:
编程语言 时间:
2018-11-29 12:21:20
阅读次数:
200
前言 由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 ——-《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大排序、堆、队列、树、并查集、图等等大概几十篇。 希尔排序 希尔排序,也称递减增量排序算法,是插入 ...
分类:
编程语言 时间:
2018-11-25 11:54:08
阅读次数:
148
希尔排序 希尔排序是希尔(Donald Shell)提出的一种排序方法,也属于插入排序,但是简单插入排序的高效版本,也称为缩小增量排序。基本思想是将待排序元素进行增量分组,然后在分组组内进行插入排序,随着增量的减少,每个分组组内的元素越来越多,直至增量减至1时,所有元素都分到同一个组内,执行插入排序 ...
分类:
编程语言 时间:
2018-11-12 14:54:40
阅读次数:
169