数据结构+算法
文章平均质量分 90
木子李jones
一只往计算机大神之路上飞奔的蜗牛
展开
-
堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2015-06-25 21:33:21 · 272 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多转载 2015-07-13 16:44:42 · 247 阅读 · 0 评论 -
C/C++带括号的四则运算
(1).首先从string读入表达式,取出每一个字符后装入deque容器coll1中(源码在后面)。(2).从该容器取出每一个元素,利用栈将中缀表达式转换成后缀表达式(可参考:http://blog.csdn.net/anye3000/article/details/7939203),将后缀表达式装入容器coll3中。(3).最后从coll3中取出元素逐一处理,既使用逆波兰式求值(转载 2015-08-11 22:28:03 · 3766 阅读 · 1 评论 -
动态规划经典案例
1.最长递增子序列求一段字符串的最长递增子序列问题分析:设序列为:A="a0,a1,a2,a3,a4,a5,...,ai",定义D(i)为选i作为序列一项后,后面序列中第i项更大项数有多少,包括i.从最后一项算起D(i)=1,依次往前计算;如果akak+1 ,则往后遍历,直到寻找到m,ak举例A={1,5,2,6,3,4}算出:D=(4,2,3,1,2,1)则最长子序列原创 2015-08-17 19:24:17 · 735 阅读 · 0 评论 -
排列组合算法笔记
1.不存在重复字符的排列组合如abc,此种情况很简单,算法代码也很少,主要思想为:将abc分为前部和后部,前部为a,后部abc,用a与后部每一个字符交换,如aa得到abc,ab得到bac,ac得到cba,最终得到abc,bac,cba三部分针对上一部分中的三个后部,分别继续应用分两部,分别交换的方法,直到后部为NULL,递归输出字符串。上述方法的递归代码如下:#原创 2015-08-14 22:25:20 · 728 阅读 · 0 评论 -
排序算法
#includeusing namespace std;void maopao(int a[],int len){for(int i=0;ifor(int j=1;jif(a[j-1]>a[j]){int t=a[j-1];a[j-1]=a[j];a[j]=t;}return;}void charusort(int a[],int len)原创 2015-08-18 22:38:06 · 297 阅读 · 0 评论