算法
南飞的雁123
这个作者很懒,什么都没留下…
展开
-
HASH排序
转自:http://wenku.baidu.com/view/c8ca9533b90d6c85ec3ac6db.html文档下载:http://download.csdn.net/detail/tianxiajianling/4288941第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长转载 2013-03-06 19:04:16 · 1281 阅读 · 0 评论 -
插入排序实现
插入排序的基本思想是将一条新纪录插入到一个含有i条记录的有序表中,使得新表依然有序。最坏情况下,在插入之前要进行i+1次比较。因此每次插入的复杂度为O(i)。则插入排序的复杂度为O(SUM(i+1))=O(n^2); #include #include "Insert.h"using namespace std;void InsertSort(int e,int *a,in原创 2013-08-16 22:13:53 · 489 阅读 · 0 评论 -
归并排序的迭代及递归实现
归并排序迭代实现:归并排序,将输入表看做n个有序长度为1的子表,第一趟子表两两归并,生成n/2个长度为2的子表,依次归并子表,子表数目依次减半,直至仅有一个子表,结束;//归并 inilist表的有序的两段 [start,mid] ,(mid,end] 到Mergelist中void Merge(int *inilist,int*Mergelist,int start,int mid,i原创 2013-08-17 14:47:21 · 954 阅读 · 0 评论 -
二叉查找树的后续遍历序列验证
问题:验证一个给定的序列是否可能是某一棵二叉查找树的后续遍历序列。如果是则返回1,否则返回0。假设输入的数组的任意元素都不相同; 代码如下:仅供参考。#include #define TRUE 1#define FALSE 0using namespace std;//data [stat,end]//验证data中的元素是否为某棵二叉查找树的后续遍历bool原创 2013-08-27 18:11:28 · 808 阅读 · 0 评论 -
二叉树的后续遍历非递归实现
看了很多的数据结构资料,很少看到有把实现后续遍历当成,二叉树遍历的例子来讲解的,大都采用中序遍历作为例子;相比而言,实现二叉树的后续遍历就稍微麻烦一些,但是这更能启发思考,所以,将我自己的一种实现作为参考提供给大家;正确性还有待验证,本人验证的事例无误。希望发现问题的能给指正。 闲话不多说了!请看代码:二叉树后续遍历: template class TreeNode原创 2013-08-13 17:03:44 · 1499 阅读 · 2 评论 -
C++中的set
1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。 创建multiset base; 删除:如果删除元素a,那么在定义的比较关系下和a相等的所有元素都会被删除 base.转载 2013-03-26 20:28:17 · 780 阅读 · 0 评论 -
吉哥系列故事——完美队形
吉哥这几天对队形比较感兴趣。有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则称之为完美队形: 1、挑出的人保持他们在原队形的相对顺序不变;2、左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,原创 2013-03-22 22:53:38 · 809 阅读 · 0 评论 -
01背包问题
0-1背包问题0-1背包问题: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这个问题的特点是:每种物品只有一件,可以选择放或者不放。算法基本思想:利用动态规划思想 ,子问题为:f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。其状态转移方程转载 2013-02-28 21:18:06 · 428 阅读 · 0 评论 -
八皇后问题
问题描述: 在8*8 的国际象棋上摆放8个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角线上。请问有多少种摆法?(皇后相互攻击的规则有点意思:皇后们见了面就掐,很贴近现实,哈哈。)解题思路:由于不得处在同一行、同一列那么肯定是各行各有一位皇后;个列也各有一位皇后;定义一个数组:int ColumnIndex【8】={0,1原创 2013-03-21 23:03:37 · 538 阅读 · 0 评论 -
求数列的最长递增子序列
求数组中最长递增子序列:求一个一维数组中最长递增子序列的长度?例如:1,-1,2,-3, 4,-5 ,6,-7;其最长递增子序列的长度为4( 1, 2 ,4 ,6 ); 一下是我根据“编程之美” 的解法三的实现代码.供大家参考:#include#include using namespace std;const int Inf=1000000;int原创 2013-04-02 22:40:49 · 1271 阅读 · 0 评论 -
出现频率最高的笔试题strcpy写法
某位仁兄分析的实在是全面,转载以示崇敬:题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。 解说: strcpy的实现代码char * strcpy转载 2013-03-30 17:08:39 · 524 阅读 · 0 评论 -
有符号整数加减溢出检测问题
当计算有符号整数加减法时需要检验是否溢出时: 在此,仅讨论加法的溢出问题(减法可以转换为加一个负数)。 1. x y 皆为正数时, 若 x+y 2. x y 皆为负数是,若 x+y>=0 则说明发生了溢出(注意: INT_MIN +INT_MIN =0 );其实, INT_MIN ,INT_MIN+1,........原创 2013-03-29 17:34:36 · 2211 阅读 · 0 评论 -
左偏树札记
用左偏树实现的优先队列,合并操作的时间复杂度为对数时间。关于左偏树为什么有此特点,我们还是要从左偏树的定义出发,此处我们对高度左偏树进行分析;相关定义:扩展二叉树:一棵扩展二叉树是一棵二叉树,其中所有空的子二叉树都被替换为一个方块节点(称为外部结点,而树中原来结点称为内部结点);扩展二叉树是为讲解左偏树定义而引人的概念,并非真的是有方块节点存在,只是从概念上而言的。原创 2013-08-18 16:13:01 · 778 阅读 · 0 评论