直接插入排序: 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。 实例: 0.初始状态 3,1,5,7,2,4,9,6(共8个数 ...
分类:
编程语言 时间:
2018-12-16 17:10:25
阅读次数:
189
一.希尔排序shellsort也称缩小增量排序,是对插入排序算法的改进,其工作原理是定义一个间隔序列来表示排序过程中进行比较的元素之间有多远的间隔,每次将具有相同间隔的数分为一组,进行插入排序,大部分场景中,间隔是可以提前定义好的,也可以动态生成。在较大的数据集上,希尔排序对于插排的优化效果是非常明显的。./***希尔排序示例代码*/functionshellSort(gaps,arr){for(
分类:
编程语言 时间:
2018-11-29 12:21:20
阅读次数:
200
插入排序思想: 1.先从一串元素中随机取出一个元素,置于数组A中;其他元素置于数组B中; 2.遍历数组B中的每一个元素,将每个元素以正确的顺序置入数组B中。 插入排序算法时间复杂度:Θ(n2) 分治法思想: 1.分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。 2.解决这些子问题,递归求 ...
分类:
编程语言 时间:
2018-10-30 14:42:39
阅读次数:
170
插入排序原本的实现方式之一: 插入排序算法对应的比喻例子是打牌时抽牌的过程,如果目标的数据类型为链表的话,用插入排序会特别适合。 这边的目标数据类型是数组,并且是原地算法,更贴切的比喻是按照颜色深浅整理蜡笔盒里的蜡笔。 步骤的话,就是取出某根蜡笔,然后找到它对应的位置,然后将这个位置之后的蜡笔都滚动 ...
分类:
编程语言 时间:
2018-10-26 20:33:30
阅读次数:
184
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是基于插入排序的以下两点性质而提出改进方法 ...
分类:
编程语言 时间:
2018-10-12 21:20:33
阅读次数:
130
算法分析 (1)时间复杂度 从时间来看,排序的基本操作为:比教两个关键字的大小移动记录。 ...
分类:
编程语言 时间:
2018-09-22 17:05:58
阅读次数:
116
算法分析: (1)时间复杂度 从时间上比较,折半查找比顺序查找快,所以就平均性能来说,折半插入排序优于直接插入排序。 折半插入排序所需要的关键字比较次数与待排序序列的初始排列无关,仅依赖于记录的个数。不论初始序列情况如何,在插入第i个记录时,需要经过logi+1(向下取整+1)次比较,才能确定它插入 ...
分类:
编程语言 时间:
2018-09-22 16:57:26
阅读次数:
166
一.排序 二.插入排序 (1)算法描述 (2)性能分析 (3)寻求优化 三.归并排序 (1)算法思想 (2)性能分析 (2)示例 (3)算法问题及优化 ...
分类:
编程语言 时间:
2018-09-20 17:17:24
阅读次数:
243
小朋友学数据结构(9):希尔排序 (一)基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 (二)例子 有一个数组,其原始数组为: 2-1.png 取初始增量gap = len ...
分类:
编程语言 时间:
2018-09-08 00:48:01
阅读次数:
211
1、冒泡排序 该名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大。 冒泡算法的运作规律如下: ①、比较相邻元素。如果第一个比第二个大,就交换他们两个。 ②、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数( ...
分类:
编程语言 时间:
2018-09-02 20:24:05
阅读次数:
175