算法
文章平均质量分 56
有恒者Maggie
算法基础 Java开发
展开
-
各种排序算法及其复杂度
稳定的 冒泡排序(bubble sort) — O(n^2) 鸡尾酒排序(Cocktail sort,双向的冒泡排序) — O(n^2) 插入排序(insertion sort)— O(n^2) 桶排序(bucket sort)— O(n); 需要 O(k) 额外空间 计数排序(counting sort) — O(n+k); 需要 O(n+k) 额外空间 合并转载 2012-09-06 23:20:24 · 1488 阅读 · 2 评论 -
一个整数N除以2余1,除以3余2,除以4余3,...,除以10余9,但除以11余0,计算符合该条件的最小整数
一个整数N满足如下条件:N%2=1N%3=2N%4=3...N%9=8N%10=9N%11=0计算符合该条件的最小整数由以上规律可以得知(N+1)是2,3,...10的公倍数,且N可以被11整除我们可以求得2,3,...10的最小公倍数为2520,而2520-1=2519刚好可以被11整除。因此N=2519原文作者:MaggieDor原创 2012-10-20 14:02:12 · 7545 阅读 · 0 评论 -
两个人约好12:00-13:00之间见面,先到的人等后到的人不超过15分钟,等待时间超过15分钟,先到的人会离去,问两人相遇的概率。
两个人约好12:00-13:00之间见面,先到的人等后到的人不超过15分钟,等待时间超过15分钟,先到的人会离去,问两人相遇的概率。设两个人到达的时间分别为x,y。将12:00~13:00这个时间段看做0~1的话,15分钟即是1/4。由题设得,0若两人相遇,则 |x-y| 用图表示为即中间部分的面积,为1-2*[(1/2)*(3/4)2] = 7/16原创 2012-10-20 13:24:46 · 16820 阅读 · 0 评论 -
洗牌算法
用1到54代表54张牌,实现洗牌算法。我的思路是使用一个顺序保存了这54个整数的list来代表原始牌堆,新建一个长度为54的数组array来保存打乱后的牌。第一次取1-54中的一个随机数r1,然后将list中下标为r1的那项的值保存在array[0]中,再将list中下标为r1的那项remove。第二次取1-53中的一个随机数r2,然后将list中下标为r2的那项的值保存在array[原创 2012-10-14 22:54:37 · 1986 阅读 · 2 评论 -
用容积为15升和27升的两个杯子向一个水桶中注水,可以精确向一个水桶中注入多少升水呢
用容积为15升和27升的两个杯子向一个水桶中注水,可以精确向一个水桶中注入多少升水呢?选项有A.53 B.25 C.33 D.52设杯子X容量15升,杯子Y容量27升。若将杯子Y装满水,再倒入X中使X装满水,杯子Y中将剩余12升水。若将杯子X装满水两次,依次倒入Y中使Y装满水,第二次杯子X中将剩余3升水。因此使用X,Y肯定可以准确的量出3升,12升,15升和27升水。而原创 2012-10-13 22:15:30 · 16586 阅读 · 4 评论 -
sql语句执行顺序
sql语法的分析是从右到左 一、sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式。5)选择优化器,不同的优化器一般产生不同的转载 2012-10-13 23:32:11 · 1564 阅读 · 0 评论 -
【排序算法】鸡尾酒排序的实现与分析
以升序排序为例:算法思路鸡尾酒排序即双向的冒泡排序,是冒泡排序的轻微变形。它的主要思路是对于一组无规律排放的数字,先找到最大的数字放到最后一位,在反向找到最小的数字放到第一位。然后再找第二大的数字放到倒数第二位,再找第二小的数字放到第二位。以此类推,直到所有数字有序排列。代码实现public class CocktailSort原创 2012-09-07 23:20:18 · 3629 阅读 · 1 评论 -
【算法】一个小算法的非递归方式的两种实现
某幢大楼有100层。你手里有两颗一模一样的玻璃珠。当你拿着玻璃珠在某一层往下扔的时候,一定会有两个结果,玻璃珠碎了或者没碎。这幢大楼有个临界楼层。低于它的楼层,往下扔玻璃珠,玻璃珠不会碎,等于或高于它的楼层,扔下玻璃珠,玻璃珠一定会碎。玻璃珠碎了就不能再扔。现在让你设计一种方式,使得在该方式下,最坏的情况扔的次数比其他任何方式最坏的次数都少。也就是设计一种最有效的方式。解决方案1(一个原创 2012-09-10 21:48:34 · 4412 阅读 · 2 评论 -
【笔试题】一个无重复面值的找零算法的思路与实现【方案2】
给出升序排列的N个数字,比如1, 2, 3, 7, 70找出无法被这组数字组成的最小正整数。(这组数字中每个数字最多使用一次)(1)简单描述你的算法和思路。(2)用C/C++实现(3)分析你的代码的时间复杂度和空间复杂度解题思路:这个问题类似于一个硬币找零问题的升级版。现存在一堆面值为V1, V2, V3, ...的硬币,每种面值的硬币只有一枚,现在需要为顾客找出总原创 2012-09-04 01:49:12 · 1432 阅读 · 0 评论 -
【排序算法】冒泡排序的实现与分析
以升序排序为例:实现方法将所有的待排序的n个数字放入数组中。从第1个数字开始遍历数组,两两比较数组中的元素,如果前者大于后者,则将两者位置进行交换。一次遍历后,最大值将排在最后一个位置上。然后对前n-1个元素做第二次遍历和交换,遍历后第二大的数字将被排到数组的倒数第二个位置。以此类推。代码实现public class BubbleSort {原创 2012-09-07 00:41:29 · 1284 阅读 · 0 评论 -
【笔试题】一个无重复面值的找零算法的思路与实现
在论坛上看到有人问了一个类似的算法题:给出升序排列的N个数字,比如1, 2, 3, 7, 70找出无法被这组数字组成的最小正整数。(这组数字中每个数字最多使用一次)(1)简单描述你的算法和思路。(2)用C/C++实现(3)分析你的代码的时间复杂度和空间复杂度解题思路:这个问题类似于一个硬币找零问题的升级版。现存在一堆面值为V1, V2, V3, ...的硬币,每种面原创 2012-09-01 18:01:44 · 2314 阅读 · 0 评论