
算法
文章平均质量分 52
day walker
相信明天会更好的码农一枚
展开
-
0/1背包问题(一道编程题)
0/1背包问题。包重量max,有物件m1,m2,m3...n,任意取出物件加起来重量正好为包的容量,求装了哪些物件。这个可能有解,可能无解,也可能多个解。下面这个算法用递归来做,不过只能求出有解情况的一个解。 package example.algorithm;public class Knap { /** * 0/1背包问题。all 为所有物件。max为包的容量。要求原创 2012-04-12 18:24:02 · 1490 阅读 · 0 评论 -
不用中间变量互换a,b的值
今天看到这个问题,我还一楞没想出来。查了下其实特别简单:a = 1;b=2; a = a + b;b = a - b;a = a - b;原创 2012-05-20 09:19:34 · 1598 阅读 · 0 评论 -
搜狗笔试:N个正实数选出若干个之和最接近M
搜狗:有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 请描述实现算法,并指出算法复杂度。思路:对于每一个数字,都分两种情况,取它或者不取,有点类似于0/1背包问题,但是之前只会那种加起来正好等于某个值的这种选择问题,这个是取最优解,还是不太一样,取最优解就要求实际上要遍历到每种情况。package原创 2012-10-11 13:51:02 · 4243 阅读 · 0 评论 -
搜狗笔试题目:4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法
4*5的棋盘,在左下角的格子移动到右上角的格子,求有多少种移动方法。给定一个m*n的格子或棋盘,问从左下角走到右上角的走法总数(每次只能向右或向上移动一个方格边长的距离)解答:把棋盘看做二维坐标,设f(m,n)代表从坐标(0,0)到坐标(m,n)的移动方法,则f(m,n)=f(m-1,n)+f(m,n-1)初始为f(0,0)=0,f(0,1)=1,f(1,0)=1由原创 2012-10-12 09:51:34 · 7528 阅读 · 5 评论 -
老生常谈 排序算法(JAVA)-- 冒泡 插入 选择
1.冒泡 /** * 冒泡排序 * 稳定 * 时间 1+2+...+n = n(n+1)/2 * 时间复杂度 n^2 * @param data */ public static void sort2(int[] data){ for (int i=0;i<data.length;i++){ for(i原创 2014-03-03 15:17:47 · 1084 阅读 · 0 评论 -
老生常谈 排序算法(JAVA)-- 归并排序
代码 package exam.sorts; import java.util.Arrays; /** * 归并排序 * 稳定 * 基于分治法,把大的问题拆成小的问题来处理。拆到最后变成了合并,两个数字合并,之后两个顺序数列合并 * 时间复杂度nlgn * @author wz * */ public class MergeSort { ...原创 2014-03-03 16:15:41 · 1060 阅读 · 0 评论 -
老生常谈 排序算法---快速排序
关于快速排序,我觉得是必须掌握的排序算法,因为这个算法真的是很奇妙,不知道发明者当初是怎么想出来的。这种基于分治策略的算法平均时间复杂度基本都是nlgn,快速排序优点是不需要像归并排序一样占用额外空间。快速排序的思路就是以某一个数字作为分割,一般是以第一个或者最后一个,然后从左边找比它大的跟右边找到的比它小的互换,最后实现左边的值都比此值小,右边值都比它大。然后对它分割开的序列再次如此,直到序列为1个值结束,完整成个排序过程。原创 2014-12-26 11:35:54 · 1047 阅读 · 0 评论