上一页 1 2 3 4 5 6 7 8 9 ··· 44 下一页
摘要: 现在我们假设只有一个table,名为pages,有四个字段,id, url,title,body。里面储存了很多网页,网页的url地址,title和网页的内容,然后你用一个sql查询将url匹配的排在最前, title匹配的其次,body匹配最后,没有任何字段匹配的,不返回。就是上面这道面试题,让我想了一个下午,在网上找资料,最后用下面方法实现SELECT *FROM page where url like '%baidu%' or title like '%baidu%' or like ''ORDER BY CHARINDEX('ba 阅读全文
posted @ 2014-01-19 09:52 higirle 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。full join:外连接,返回两个表中的行:left join + right join。cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。关键字:on数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用leftjion时,on和where条件的区别如下:1、on条件是在生成临时 阅读全文
posted @ 2014-01-18 20:03 higirle 阅读(84680) 评论(8) 推荐(10) 编辑
摘要: 算法四:回溯和分支界定回溯:寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完:所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用这种方法,因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用最快的计算机也只能解决规模很小的问题。对候选解进行系统检查的方法有多种,其中回溯和分枝定界法是比较常用的两种方法。按照这两种方法对候选解进行系统检查通常会使问题的求解时间大大减少(无论对于最坏情形还是对于一般情形)。事实上,这些方法可以使我们避免对很大的候选 阅读全文
posted @ 2014-01-16 13:55 higirle 阅读(886) 评论(0) 推荐(0) 编辑
摘要: 贪婪算法算法思想:在贪婪算法(greedy method)中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪婪决策的依据称为贪婪准则(greedy criterion)。拓扑排序:1. 算法描述:设n是有向图中的顶点数,设V是一个空序列w h i l e(t ru e) { 设w不存在入边( v,w),其中顶点v不在V中 如果没有这样的w,b re a k。 把w添加到V的尾部}i f(V中的顶点数少于n) //算法失败{ else V是一个拓扑序列}2. 代码示例: 阅读全文
posted @ 2014-01-10 16:33 higirle 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 求点集中的最近点对有以下两种方法:设p1=(x1, y1), p2=(x2, y2), …, pn=(xn, yn)是平面上n个点构成的集合S,设计算法找出集合S中距离最近的点对。解体思路1、蛮力法(适用于点的数目比较小的情况下) 1)算法描述:已知集合S中有n个点,一共可以组成n(n-1)/2对点对,蛮力法就是对这n(n-1)/2对点对逐对进行距离计算,通过循环求得点集中的最近点对: 2)代码描述:double MinDistance = double.maxvalue;//设置一个MinDistance存储最近点对的距离,初始值为无穷大int PointIndex1,PointIndex2 阅读全文
posted @ 2014-01-09 13:41 higirle 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 编程之美2.5:寻找最大的K个数引申:寻找第k大的数:方法一:// 选择第k大的数(通过改进快速排序来实现) public static void SelectShort(int[] array, int low, int high, int k, out int value) { int i = low; int j = high; int tempItem = array[low]; value = int.MinValue; while (low t... 阅读全文
posted @ 2014-01-07 14:52 higirle 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 编程之美2.10: 对于一个有N个整数组成的数组,需要比较多少次才能把最大值和最小值找出来呢?算法的思想是:分而治之测试数据:----------------------------------------------------int []input1= { 94, 40, 49, 65, 21, 21, 106, 80, 92, 81, 679, 4, 61, 6, 237, 12, 72, 74, 29, 95, 265, 35, 47, 1, 61, 397, 52, 72, 37, 51, 1, 81, 45, 435, 7, 36, 57, 86, 81, 72 };最大数据:67 阅读全文
posted @ 2014-01-06 15:46 higirle 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 分而治之方法与软件设计的模块化方法非常相似。为了解决一个大的问题,可以:1) 把它分成两个或多个更小的问题;2) 分别解决每个小问题; 3) 把各小问题的解答组合起来,即可得到原问题的解答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决1.[金块问题] 有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重 阅读全文
posted @ 2014-01-02 15:58 higirle 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 二叉树的实现:public class Node { T date; public T Date { get { return date; } set { date = value; } } Node lChild; public Node LChild { get { return lChild; } set { lChild = value; } } Node rChild... 阅读全文
posted @ 2013-12-26 10:29 higirle 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 01背包问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。状态:用f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值,其状态转移方程为f[i][v]=max{ f[i-1][v], f[i-1][v-c[i]]+w[i] }。复杂度分析:状态数:O(NV), 迁移:O(1)总复杂度:O(NV)状态f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。对于“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策 阅读全文
posted @ 2013-12-24 13:32 higirle 阅读(560) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 44 下一页