算法思维和数据结构
ouyangbro
拷贝程序员卡卡西
展开
-
C++实现后缀表达式
算法:·开始扫描; ·数字时,加入后缀表达式; ·运算符: a. 若为最高级的运算符,入栈; b. 若为 '(',入栈; c. 若为 ')',则依次把栈中的的运算符加入后缀表达式中,直到出现'(',从栈中删除'(' ; d. 若为不原创 2011-09-09 14:56:24 · 1964 阅读 · 0 评论 -
C++算法(一)之二叉查找树
【理论支持】算法导论第十二章,二叉查找树【应用】二叉查找树是一种很常用的数据结构,太经典,必掌握!它支持很多种动态集合操作.可用作字典,用作优先队列.基本操作的时间和树高度成正比,时间复杂度为Θ(lgn)【我们要实现的操作】search 查找minMum 返回最小值maxMum原创 2011-10-09 21:39:17 · 1330 阅读 · 0 评论 -
快速排序
快排 和 它的随机化版本原创 2011-12-25 13:44:41 · 1367 阅读 · 1 评论 -
动态规划求最小代价矩阵链相乘
动态规划-求最小代价矩阵链相乘原创 2011-12-05 22:16:42 · 3595 阅读 · 0 评论 -
合并排序(归并排序)
合并排序又称为归并排序,一种二分排序。原创 2011-12-25 19:17:52 · 1587 阅读 · 0 评论 -
C++ 堆排序
C++ 堆排序原创 2011-12-23 15:06:18 · 2000 阅读 · 0 评论 -
最小生成树-Kruskal算法-Prim算法
最小生成树的两种算法:Kruskal 和 Prim原创 2013-09-13 14:54:49 · 4335 阅读 · 0 评论 -
最长公共子序列LCS和最长单调递增子序列
动态规划求最长公共子序列LCS和最长单调递增子序列原创 2011-12-12 17:54:48 · 1828 阅读 · 0 评论 -
C++算法(四)之最大优先级队列
Ps:本文是写了C++排序算法(一)之堆排序之后(个人觉得这个C++ STL 中的优先队列很有用,所以放于0x0节:不过为了加深对它的理解,在0x1~0x3节会对它进行一个模拟。如果只想要会用,看完0x0节即可!)==================================================0x0 C++ STL中的priority_queue原创 2011-12-23 23:14:53 · 2009 阅读 · 0 评论 -
排序算法(五)之计数排序
计数排序假设n个输入元素中每一个都是介于o到k之间的整数。当k=O(n)时,计数排序的运行时间是Θ(n)。基本思想是对每一个输入元素x,确定出小于x的元素个数,有了这个信息之后,就可以把x直接放在它在最终输出数组中的位置上,例如,有8个元素小于x,那么x就属于第9个输出位置。当有几个元素相同的时候,需要略作修改,不能把它们放在同一个输出位置上。我们假定输入数组为A[1..n],目标数组为B原创 2011-12-25 21:04:12 · 947 阅读 · 0 评论 -
重载输入输出操作符
最近学习数据结构,要我写一个多项式运算,还是链式存储,好吧,我设计的时候,发现要是有个>的重载,我的函数会简单很多,也很方便用户。输出操作符ostream& operator { os return os;}解释下,为了原创 2011-09-12 10:47:02 · 2012 阅读 · 1 评论 -
结构体完美解决二维数组返回值问题
今天遇到一个很恼人的问题,C的返回值怎么返回一个矩阵呢,我们都知道矩阵是用二维数组存储的。于是就涉及到返回值的问题了。返回值两个作用 1.程序返回到调用语句处继续进行2.回送一个数值函数停止运行并返回到调用程序有两个方法:1.执行到最后一个语句2.遇到return,也就是用到了返回值的第一个作用非空函数都会返回一个值,根据文献上说,根据作用分为三种:1.返回一个原创 2011-12-07 16:13:50 · 3782 阅读 · 2 评论 -
深入总结C/C++数组与指针
本文是看了某文章之后总结的,算是翻译吧。1.指针与数组。数组能被隐式转化成常量指针并指向数组中的第一个元素的地址,但是什么时候能呢?什么时候不能呢?我们关注二维数组(一维的没什么好说),int b[2][2]={{1,1},{2,2}};数组名b在int (*a)[2]=b;中会被转化成第一个元素的地址,也就是&b[0].因为&b[0]是一个指向一维数组的指针,所以赋值给(*a)[转载 2011-12-08 20:31:32 · 1053 阅读 · 0 评论 -
排序算法(三)之插入排序
谈论排序的时候,绝对不会少了插入排序算法,它实在是太经典了,而且十分简单。算法:插入排序Insertion_sort(A)for j = 2 to A.length do key=A[j] i = j-1 while(i>0 &&A[i]>key) do A[i+1]=A[i]原创 2011-12-25 14:53:47 · 893 阅读 · 0 评论 -
2014哈商大ICPC/ACM校赛解题报告
哈商大水水的ACM校选赛。。用C++答完。。原创 2014-04-20 21:58:12 · 2254 阅读 · 4 评论