02 2016 档案

摘要:---恢复内容开始--- 钢条切割 有钢条收益 钢条长度 1, 2, 3, 4, 5, 6, 7, 8, 9, 10钢条收益 1, 5, 8, 9, 10, 17, 17, 20, 24, 30 求长度为n的钢条最优切割方案? 自顶向下递归实现 static void Main(string[] a 阅读全文

posted @ 2016-02-28 22:58 峰入云 阅读(335) 评论(0) 推荐(0)

摘要:二叉搜索树基本操作都可以在O(h)内完成,然而数的高度较高时,可能并不比在链表上执行的快。红黑树是平衡搜索树中的一种保证在最坏情况下时间复杂度为O(lg(n)) 红黑树的性质 每个节点或是红色或是黑色 根节点是黑色的 每个叶节点是黑色的 如果一个节点是红色,则两个子节点是黑色的 每个节点,到后代叶子 阅读全文

posted @ 2016-02-26 16:01 峰入云 阅读(349) 评论(0) 推荐(0)

摘要:二叉搜索树是以一颗二叉树来组织的。这棵树可以使用链表数据结构表示。每个节点除了key和卫星数据外。每个节点包含属性left、right、parent。二叉搜索树中树,如果x是一个节点,则x.left.key < x.key < x.right.key。 中序遍历、前序遍历、后续遍历 查询-递归 查询 阅读全文

posted @ 2016-02-25 23:26 峰入云 阅读(366) 评论(0) 推荐(0)

摘要:直接寻址列表 direct-address table 假设有动态集合,元素取自U={0,1,...,m-1}中一个关键字,不重复。 为了表示这个动态集合,可以使用一个直接寻址列表T[0..m-1]进行存储,列表中每一个位置叫做槽slot,slot k point to key k. if k is 阅读全文

posted @ 2016-02-25 20:10 峰入云 阅读(223) 评论(0) 推荐(0)

摘要:栈 栈是后进先出 class Stack { int[] items; public Stack(int i = 10) { Length = i; Top = -1; items = new int[10]; } //栈的最大大小 public int Length { get; set; } / 阅读全文

posted @ 2016-02-24 23:47 峰入云 阅读(232) 评论(0) 推荐(0)

摘要:在一个n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。 使用选择算法,可以在Θ(n)时间内找到第i个顺序统计量 对序列A进行划分,使得[s...p-1] < [p] < [p+1...e] 如果p==i,则返回A[p] 如果p>i,对[s...p-1]重新划分,反之对[p+1...e] 阅读全文

posted @ 2016-02-24 21:08 峰入云 阅读(203) 评论(0) 推荐(0)

摘要:计数排序 耗时Θ(n) 计数排序需要首先确定数组A中数据的范围,然后统计在每个位置上数据出现的个数,将其保存在一个与数据范围等大的数组C中。 然后对C进行累加,这样C[i]的值,便可以当作输出数组B中数值i的位置。 对A中的每一个数据,通过C[A[j]]-1,得到在B中的位置,同时对C[A[j]]- 阅读全文

posted @ 2016-02-23 22:34 峰入云 阅读(213) 评论(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 峰入云 阅读(193) 评论(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 峰入云 阅读(208) 评论(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 峰入云 阅读(222) 评论(0) 推荐(0)

摘要:结构上是递归的,为了解决给定的问题,算法一次或者多次递归调用自身,解决紧密相关的子问题,通常有三个步骤: 分解:将问题分级为若干个子问题 解决:对子问题进行递归求解,如果子问题足够小,则直接求解 合并:子问题的解还原为原问题的解 使用归并法排序: static void Main(string[] 阅读全文

posted @ 2016-02-22 14:51 峰入云 阅读(202) 评论(0) 推荐(0)

摘要:算法 阅读全文

posted @ 2016-02-22 14:16 峰入云 阅读(122) 评论(0) 推荐(0)

导航