全部博文(2759)
发布时间:2013-08-29 00:48:15
某些算法逻辑,用递归很好表述,程序也很好写。理论上所有的递归都是可以转换成非递归的。如果有些场合要求不得使用递归,那就只好改成非递归了。通常改成非递归算法的思路,就是使用临时的一个栈来存放计算的临时值。下面演示2个例子。示例一:假设有如下的递归函数f(1)=3f(2)=11f(n)=4*f(n.........【阅读全文】
发布时间:2013-08-27 03:41:27
题目:查找最小的k个元素。利用堆排序解决这个问题的思路有两种: 思路 1:将输入的n个数建立成大顶堆并排序后,再遍历输出前k个元素,此k个元素即使最小的K个元素。 思路2: 维护k个元素的最大堆,即用容量为k的最大堆存储最先遍历到的k个数,并假设他们是最小的k个数。继续遍历数列,每次遍历.........【阅读全文】
发布时间:2013-08-20 11:06:32
一、如何实现编译器中的符号成对检测?1>算法思路: 1)从第一个字符开始扫描 2)当遇见普通字符时忽略,当遇见左符号时压入栈中 3)当遇见右符号时从栈中弹出栈顶符号 4)进行匹配.........【阅读全文】
发布时间:2013-08-07 00:33:55
上一篇文章我们通过迪杰斯特拉算法解决了从某个源点到其余各顶点的最短路径问题。从循环嵌套很容易得到此算法的时间复杂度为O(n^2)。可是怎么只找到从源点到某一个特定终点的最短路径,其实这个问题和求源点到其他所有顶点的最短路径一样复杂,时间复杂度依然是O(n^2)。 此时比较简单方法就是.........【阅读全文】