代码改变世界

随笔档案-2011年04月

【思维】中位数与顺序统计

2011-04-28 00:08 by BlueDream, 1635 阅读, 收藏, 编辑
摘要: 算法定义在统计学中,中值(又称中位数)代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中值。如果观察值有偶数个,则中值不唯一,通常取最中间的两个数值的平均数作为中值。一个数集中最多有一半的数值小于中值,也最多有一半的数值大于中值。如果大于和小于中值的数值个数均少于一半,那麽数集中必有若干值等同于中值。设连续随机变量X的分布函数为F(X),那么满足条件P(X≤m)=F(m)=1/2的数称为X或分布F的中位数。对于一组有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外 阅读全文

【思维】基数排序

2011-04-17 23:35 by BlueDream, 1829 阅读, 收藏, 编辑
摘要: 算法定义基数排序(Radix sort)是一种排序算法,它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零. 然后, 从最低位开始, 依次进行一次排序.这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列.基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。算法描述基数排序的简单描述就是将数字拆分为个位十位百位,每个位依次排序。因为这对算法稳定要求高。所以我们对数位排序用到上一个排序方 阅读全文

【思维】计数排序

2011-04-14 23:10 by BlueDream, 1396 阅读, 收藏, 编辑
摘要: 算法定义计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n+k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名。但是,计数排序可以用在基 阅读全文

【思维】快速排序

2011-04-14 00:34 by BlueDream, 1176 阅读, 收藏, 编辑
摘要: 算法定义快速排序是一种排序算法,由C. A. R. Hoare所发展的,以平均效能来说,排序n个项目要Θ(nlogn)次比较。然而,在最坏的效能下,它需要Θ(n2)次比较。一般来说,快速排序实际上明显地比其他Θ(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。算法描述快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为: 从数列中挑出一个元素,称为 "基准"(pi 阅读全文

【思维】堆排序

2011-04-13 01:35 by BlueDream, 1164 阅读, 收藏, 编辑
摘要: 算法定义堆排序(Heapsort)是指利用(堆)这种数据结构所设计的一种排序算法。堆积树是一个近似完全二叉树的结构,并同时满足堆属性:即子结点的键值或索引总是小于(或者大于)它的父节点。 最差时间复杂度 O(nlogn) 最优时间复杂度 O(nlogn) 平均时间复杂度 Θ(nlogn) 算法描述在堆积树的数据结构中,堆积树中的最大值总是位于根节点。堆积树中定义以下几种操作: 最大堆积调整(Max_Heapify):将堆积树的末端子结点作调整,使得子结点永远小于父结点 创建最大堆积(Build_Max_Heap):将堆积树所有数据重新排序 堆积排序(HeapSort):移除位在第一个数据的根结 阅读全文

【思维】插入排序

2011-04-09 12:23 by BlueDream, 1166 阅读, 收藏, 编辑
摘要: 算法定义插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序 阅读全文
点击右上角即可分享
微信分享提示