2016年2月23日

摘要: 计数排序 耗时Θ(n) 计数排序需要首先确定数组A中数据的范围,然后统计在每个位置上数据出现的个数,将其保存在一个与数据范围等大的数组C中。 然后对C进行累加,这样C[i]的值,便可以当作输出数组B中数值i的位置。 对A中的每一个数据,通过C[A[j]]-1,得到在B中的位置,同时对C[A[j]]- 阅读全文
posted @ 2016-02-23 22:34 峰入云 阅读(210) 评论(0) 推荐(0)
摘要: 快速排序使用归并思想,对于子数组A[p..r],有如下三步分治过程: 分解:划分为A1[p..q-1]和A2[q+1..r],使得A1元素比A[q]小,A2元素比A[q]大 解决:递归调用快速排序,对分解的数组A1和A2进行排序 合并:因为子数组都是原址排序,不需要排序,数组A[p..r]已经有序 阅读全文
posted @ 2016-02-23 21:58 峰入云 阅读(190) 评论(0) 推荐(0)
摘要: 堆排序 static void Main(string[] args) { //产生随机序列 var rand = new Random(); List<int> sequence = new List<int>(); int length = 50; int count = 0; //以堆的形状输 阅读全文
posted @ 2016-02-23 20:21 峰入云 阅读(206) 评论(0) 推荐(0)
摘要: 算法 最坏情况 平均情况/期望运行时间 插入排序 Θ(n^2) Θ(n^2) 归并排序 Θ(nlg(n)) Θ(nlg(n)) 堆排序 O(nlg(n)) 快速排序 Θ(n^2) Θ(nlg(n))(期望) 计数排序 Θ(k+n) Θ(k+n) 基数排序 Θ(d(k+n)) Θ(d(k+n)) 桶排 阅读全文
posted @ 2016-02-23 19:25 峰入云 阅读(220) 评论(0) 推荐(0)

导航