怎么记忆稳定性: 总过四大类排序:插入、选择、交换、归并(基数排序暂且不算) 比较高级一点的(时间复杂度低一点得)shell排序,堆排序,快速排序(除了归并排序)都是不稳定的,在加上低一级的选择排序是不稳定的。 比较低级一点的(时间复杂度高一点的)插入排序, 冒泡排序,归并排序,基数排序都是稳定的。 ...
分类:
编程语言 时间:
2016-05-18 17:47:06
阅读次数:
725
直接插入排序:在序列中,假设升序排序1)从0处开始。1)若走到begin=3处,将begin处元素保存给tmp,比较tmp处的元素与begin--处元素大小关系,若begin处<begin-1处,将begin-1处元素移动到begin;若大于,则不变化。再用tmp去和begin--处的元素用同样的方法去作比较,直至b..
分类:
编程语言 时间:
2016-05-18 06:59:33
阅读次数:
222
/* 建议先看堆调整方法,堆调整了解了,整个排序算法就算掌握了 */ - (void)viewDidLoad { [super viewDidLoad]; /* 测试数据 */ NSArray *array=@[@3,@2,@6,@4,@1,@0,@6,@7,@5]; NSMutableArray ...
分类:
编程语言 时间:
2016-05-17 11:20:33
阅读次数:
281
堆数据结构是一种数组对象,它可以被视为一颗完全二叉树结构。最大堆:每个父节点都大于孩子节点。最小堆:每个父节点都小于孩子节点。堆排序的思想:对于给定的N个数据,初始时把这些记录看作是一颗顺序存储的二叉树,然后将其调整为一个最大堆,然后将堆的最后一个元素与堆顶..
分类:
编程语言 时间:
2016-05-17 01:08:47
阅读次数:
367
对于一个int数组,请编写一个堆排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: 代码: ...
分类:
编程语言 时间:
2016-05-16 19:31:12
阅读次数:
153
一般说的堆都是二叉堆。 1. 首先,需要创建一个堆,二叉堆在结构上的特殊性(完全二叉树),使得我们可以用一个一维数组来保存它。例如: 这个堆就可以用 { 1, 3, 5, 7, 9 }来保存。那么在这个数据结构中,如何找到一个节点的两个子节点或者父节点呢? 只要用这个公式就可以了。父节点 = ( i ...
分类:
编程语言 时间:
2016-05-16 14:31:13
阅读次数:
186
比较排序是比较常见的排序算法,它分为以下几个类:交换排序:冒泡排序(BubbleSort)和快速排序(QuickSort)。插入排序:直接插入排序和希尔排序(ShellSort)。选择排序:选择排序(SelectSort)和堆排序(HeapSort)。(一)交换排序:voidBubbleSort(int*arry,intsize)
{
..
分类:
编程语言 时间:
2016-05-15 12:41:27
阅读次数:
243
一、大数据的处理给出N个数据,要求找到并输出这N个数里面最大的K个数思路:利用堆,先建一个开辟一个大小为K的数组,从N个数据里拿出K个数据放到堆里面,然后再通过向下调整法把堆调整为最小堆,此时数组的第一个元素就是堆里面最小的元素,然后在剩下的N-K个数据中依次和堆里..
分类:
其他好文 时间:
2016-05-13 15:29:39
阅读次数:
197
引言:
老师已经是第三次跟我们讲排序了,可想而知排序它的重要性,这三种基本排序的方式值得我们思考和研究,理解其中的思想。
简述:
概念:
将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序
常见排序算法:
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。...
分类:
编程语言 时间:
2016-05-13 04:24:44
阅读次数:
264
摘要:
作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。
堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫堆有序; 当每个节点都小于等于它的两个子节点时,就称为小顶堆。
...
分类:
编程语言 时间:
2016-05-13 01:18:32
阅读次数:
177