算法
i李小武
上帝把所有人都骗了,因为地狱才是最美的。。。佛知道真相,所以佛说:“我不入地狱,谁入地狱?”
展开
-
算法:插入排序
最近想认认真真,仔仔细细学习一下算法。网上刚刚买了《算法导论》,今天看了一点,做个记录。代码给上! package oliver.algorithm.sort;public class InsertionSort { public static void sort(int [] arr) { int temp; for(int j=1;j<arr.len原创 2009-11-20 23:50:00 · 513 阅读 · 0 评论 -
O(1)复杂度获得栈中的极值
设计一个栈,O(1)复杂度实现入栈,出栈,栈中最大值,栈中最小值。提示:可以用空间换时间。 具体实现代码:https://github.com/lichengwu/utils/blob/master/src/mian/java/oliver/util/colloection/FastExtremeValueAccessStack.java...原创 2012-09-09 23:47:58 · 224 阅读 · 0 评论 -
翻烙饼问题
1.这是一个翻烙饼的问题:一个饭馆的服务员,在每次客户点了烙饼的时候,都会把烙饼按下面最大上面最小的顺序摆放好,由于一只手托着盘子里的烙饼,只能用另一只手一次抓住最上面的几个烙饼进行翻个儿。求最优的翻烙饼方法(翻的次数最少)[详见《程序之美》]2.建模:书上给的算法没看懂,不过我觉得这个也可以实现,但肯定不是最优的。每次翻转的时候的目标都是最大的烙饼,第一次先把最大...2011-03-12 16:58:00 · 313 阅读 · 0 评论 -
新解:给定包含4 300 000 000个32位整数的顺序文件,如何找出一个至少出现两次的整数。...
看了编程珠玑的这个问题,一看到是顺序已经排好,很多人会想到二分查找,其实不然,线性搜索就可以做到。/** * 问题描述: * 给定包含4 300 000 000个32位整数的顺序文件, * 如何找出一个至少出现两次的整数 * * @author Oliver * */public class FindTwice { /** ...2011-02-05 20:41:00 · 187 阅读 · 0 评论 -
由象棋中的“将”和“帅”位置引出的一个算法
1.问题描述:假设中国象棋的棋盘上只有“将”和“帅”,这两个棋子。根据象棋的规则,写出“将”和“帅”所有可能的合法位置。要求只能声明一个变量。 2.建模由棋盘上的布局可知,“将”和“帅”的运动范围在一个3×3的格子里。1——2——3| | |4——5——6| | |7——8——9上面的模型模拟...2011-01-18 17:35:00 · 239 阅读 · 0 评论 -
基于位图、位向量的快速排序
需求:1.需要就N位数字进行排序(N>5)2.N位数是一个稠密的数字集合3.集合中没有重复的元素(数字)限制:1.尽量减少内存使用2.要求算法时间要短 先写一个工具类,生成稠密集合import java.util.Date;import java.util.HashSet;import java.util.Random;import ja...2010-08-21 15:48:00 · 124 阅读 · 0 评论 -
算法:归并排序
又花了点时间看看算法,这次看的是归并。感觉归并的效率比插入排序高多了!代码给上 package oliver.algorithm.sort;public class MergeSort { public static void sort(int[] arr,int first,int last) { int mid=0; if(first<last)...2009-11-21 22:43:00 · 99 阅读 · 0 评论 -
算法:插入排序
最近想认认真真,仔仔细细学习一下算法。网上刚刚买了《算法导论》,今天看了一点,做个记录。代码给上! package oliver.algorithm.sort;public class InsertionSort { public static void sort(int [] arr) { int temp; for(int j=1;j<a...2009-11-20 23:50:00 · 115 阅读 · 0 评论 -
翻烙饼问题
1.这是一个翻烙饼的问题:一个饭馆的服务员,在每次客户点了烙饼的时候,都会把烙饼按下面最大上面最小的顺序摆放好,由于一只手托着盘子里的烙饼,只能用另一只手一次抓住最上面的几个烙饼进行翻个儿。求最优的翻烙饼方法(翻的次数最少)[详见《程序之美》] 2.建模:原创 2011-03-12 16:58:00 · 2714 阅读 · 0 评论 -
新解:给定包含4 300 000 000个32位整数的顺序文件,如何找出一个至少出现两次的整数。
看了编程珠玑的这个问题,一看到是顺序已经排好,很多人会想到二分查找,其实不然,线性搜索就可以做到。/** * 问题描述: * 给定包含4 300 000 000个32位整数的顺序文件, * 如何找出一个至少出现两次的整数 * * @author Olive原创 2011-02-05 20:41:00 · 3131 阅读 · 9 评论 -
由象棋中的“将”和“帅”位置引出的一个算法
<br /> <br />1.问题描述:<br /> 假设中国象棋的棋盘上只有“将”和“帅”,这两个棋子。<br /> 根据象棋的规则,写出“将”和“帅”所有可能的合法位置。<br /> 要求只能声明一个变量。<br /> <br />2.建模<br /> 由棋盘上的布局可知,“将”和“帅”的运动范围在一个3×3<br /> 的格子里。<br /> 1——2——3<br /> | | |<br /> 4——5——6<br /> | | |<b原创 2011-01-18 17:35:00 · 1995 阅读 · 0 评论 -
基于位图、位向量的快速排序
<br />需求:<br />1.需要就N位数字进行排序(N>5)<br />2.N位数是一个稠密的数字集合<br />3.集合中没有重复的元素(数字)<br />限制:<br />1.尽量减少内存使用<br />2.要求算法时间要短<br /> <br />先写一个工具类,生成稠密集合<br /> <br />import java.util.Date;import java.util.HashSet;import java.util.Random;import java.util.Set;原创 2010-08-21 15:48:00 · 1484 阅读 · 0 评论 -
算法:归并排序
又花了点时间看看算法,这次看的是归并。感觉归并的效率比插入排序高多了!代码给上 package oliver.algorithm.sort;public class MergeSort { public static void sort(int[] arr,int first,int last) { int mid=0; if(first<last) {原创 2009-11-21 22:43:00 · 522 阅读 · 0 评论 -
生成随机数组
1.要求生成一组n位的数字,0-9...(n个)之间的稠密集合。2.用一个参数 表示稠密度,比如稠密度为0.8 则生成 10^n*0.8个数字。3.数字号码不能重复。4.生成结果放在int [] 里面,要乱序的哦,不是排序好的。5.注意内存不要溢出,尽量少用内存。...原创 2012-09-11 20:23:08 · 272 阅读 · 0 评论