1.
归并排序原理:有长度为n的子序列a[n],可以将其看做n个长度为1的子序列,将相邻子序列两两归并后子序列数量减少一半,再对子序列进行两两归并,数量又减少一般,重复直到得到一个长度为n的子序列2.
实现归并操作的代码如下:/*array[s…m]和array[m+1…t]均已各自有序,合并使得a...
分类:
其他好文 时间:
2014-05-10 00:28:40
阅读次数:
382
一、堆与堆排序的产生及定义
在简单选择排序中,每次从n个元素中比较n-1次选取最小的元素,这很好理解,但是前面比较过的数据在之后还要重新比较,这将花费大量的运算时间。堆排序算法就很好的解决了这个问题,堆排序在每次选择到最小记录的同时会根据比较结果对其他数据进行调整,堆排序的时间复杂度为O(Nlog....
分类:
其他好文 时间:
2014-05-10 00:25:14
阅读次数:
299
(一)插入排序
算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素...
分类:
其他好文 时间:
2014-05-09 22:38:41
阅读次数:
342
线性排序的一种(时间复杂度为(n))
计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。
计数排序的特征
当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。
由于用...
分类:
其他好文 时间:
2014-05-09 21:05:32
阅读次数:
309
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。
即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前...
分类:
编程语言 时间:
2014-05-09 14:47:20
阅读次数:
396
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
快速排序的优点:
(1)原址排序,空间复杂度较小。
(2)虽然最坏情况下(有序数组)...
分类:
其他好文 时间:
2014-05-09 13:50:58
阅读次数:
283
一、冒泡排序冒泡排序算是最基础的一种算法了,复杂度为O(N^2),其基本思想是:从最低端数据开始,两两相邻比较,如果反序则交换。代码如下:/*最基本的冒泡排序*/void
BubbleSort1 (int n, int *array) /*little > big*/{ int i, j...
分类:
其他好文 时间:
2014-05-09 13:02:57
阅读次数:
319
快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部.....
分类:
其他好文 时间:
2014-05-09 13:01:56
阅读次数:
360
直接插入排序对待排数量较少且基本有序的序列,其执行效率是非常高的,希尔排序正是利用了这点,将一个无序的序列拆分成几个子组,然后对几个子组分别进行插入排序。注意,这儿的分组并不是简单的{a1,a2,a3,b1,b2,b3,c1,c2,c3}(相同字母为一组),而是进行{a1,b1,c1,a2,b2.....
分类:
其他好文 时间:
2014-05-09 12:59:34
阅读次数:
280
归并排序原理:
归并排序用到的是分治思想,即把一个大问题分成两个小问题,然后把一个小问题再分为两个更小的小问题,从最小的问题开始解决,然后把小问题的结果进行整合,最终解决大问题,这种思想是自顶向下的方法,特点是先进行递归,最终进行排序,在之后的快速排序中可以看到,快速排序特点是先进行排序,后进行递归...
分类:
其他好文 时间:
2014-05-09 06:15:26
阅读次数:
280