算法
ypscut
这个作者很懒,什么都没留下…
展开
-
插入排序和归并排序
IINSERTION-SORT1 for j =2 to n2 A[j]=key //把键值插到已经排好的A[1.j-1] i=j-13 while i>0 and A[i] >key4 A[i+1]=A[i] // 把比键值大的元素向右边移动一格5 i=i-1 A[i+1]=原创 2015-03-10 16:36:59 · 275 阅读 · 0 评论 -
顺序统计
查找最小值MINIMUM(A) 1. min=A(1) 2. for i=2 to A.length 3. if min>A[i] 4. min=A[i] 5. return min 选择排序代码 #include<iostream> using namespace std; void sort(int [],int); int main(){ int a[],i;原创 2015-03-22 11:28:58 · 270 阅读 · 0 评论 -
分治策略
最大子数组问题 FIND-MAX-CROSSING-SUBARRAY(A,low,mid,high) //查找跨越中点的最大子数组left-sum=-∞sum=0for i=mid downto low sum=sum+A[i] if sum>left-sum //依次向左求和,并与左边所求得最大值比较 left-sum=sum max原创 2015-03-14 11:28:21 · 232 阅读 · 0 评论 -
红黑树
1. 满足下面红黑性质的二叉搜索树1、每个节点或是红的或是黑色2、根节点是黑色3、每个叶结点是黑色4、如果一个叶结点是红色,那么它的两个子节点都是黑色的5、对每个节点,从该节点到其后代叶结点的简单路径上,均包含相同数目的黑色节点。 2. 一棵有n个内部节点的红黑树的高度至多为2lg(n+1) 3. 在对红黑树进行update的时候,必须通过**旋转**改变某些节点的颜色以及指针结构以维持原创 2015-03-30 14:18:20 · 239 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-03-10 14:59:21 · 256 阅读 · 0 评论 -
二叉搜索树
查找关键字k: 输入一个指向树根的指针和关键字kTREE-SEARCH(x,k)if x==NIL or k==x.key return xif k<x.key return TREE-SEARCH(x.left,k)else return TREE-SEARCH(x.right,k)迭代版本ITERACTIVE-TREE-SEARCH(x,k)while x!=NIL原创 2015-03-27 11:26:48 · 227 阅读 · 0 评论 -
线性时间排序
在最坏情况下任何比较排序算法都需要做Ω(nlgn)次比较计数排序:假设输入的数据都属于一个小区间内的整数Counting-sort(A,B,k) 1. let c[0..k] be a new array 2. for i=0 to k 3. c[i]=0 4. for j=1 to A.length 5. c[A(j)]=c[A(j)]+1 //c[i]为数组A中等于i原创 2015-03-20 10:13:06 · 233 阅读 · 0 评论 -
哈希表
1、直接寻址表全域U很大的时候,容易导致内存不足;实际存储的关键字集合K相对U来说可能很小使得分配给T的大部分空间都被浪费掉。2、哈希表两个关键字可能同时映射到一个槽中1)通过链接法解决冲突CHAINED-HASH-INSERT(T,x)insert x at the head of list T[h(x.key)]CHAINED-HASH-SEARCH(T,k)search for原创 2015-03-26 12:45:39 · 305 阅读 · 0 评论 -
快速排序
算法的关键部分是PARTITION过程,实现了对数组A[p..r]的原址排序PARTITION(A,p,r)x=A(r)i=p-1for j=p to r-1 if A[j]<x i=i+1 echange A[i] with A[j]echange A[i+1] with A[r]return i+1性能分析最坏情况是划分的两个子数组分别包括n原创 2015-03-16 10:59:07 · 239 阅读 · 0 评论 -
数据结构扩张
扩张红黑树构造出两种数据结构动态顺序统计:支持一般动态集合上顺序统计操作的数据结构,通过这种结构我们可以快速的找到一个集合中的第i小的数,或者一个指定元素在集合中的全序中的位置。 修改红黑树使得可以在O(lgn)时间内确定任何的顺序统计量,集合在集合线性序中的位置成为元素的**秩**。在红黑树的节点中添加了一个新的属性x.size,包含了以x为根的(包含x)的子树的内节点数,即这棵子树的大原创 2015-03-31 14:42:09 · 309 阅读 · 0 评论