上一页 1 2 3 4 5 6 7 8 9 10 ··· 58 下一页
  2014年4月6日
摘要: 转自:http://blog.csdn.net/caryaliu/article/details/8280647从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:各种内排序算法的时间、空间复杂度排序方法平均时间最坏情况辅助空间插入排序O(n*n)O(n*n)O(1)谢尔排序O(n*log2n)O(n*log2n)O(1)泡排序O(n*n)O(n*n 阅读全文
posted @ 2014-04-06 17:11 猿人谷 阅读(2391) 评论(0) 推荐(0)
  2014年4月4日
摘要: 题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘者的分析复杂问题的能力以及编程的能力。由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。于是我们可以定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i行的皇后的列号。先把ColumnIndex的八个数字分别用0-7初始化,接 阅读全文
posted @ 2014-04-04 19:26 猿人谷 阅读(569) 评论(0) 推荐(0)
摘要: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。这就是有名的约瑟夫(Josephuse)环问题。可以用环形链表模拟圆圈的经典解法。分析:用模板库中的std::list来模拟一个环形链表。由于std::list本身不是一个环形结构,因此每当迭代器扫描到链表末尾的时候,要记得把迭代器移到链表的头部,这样就相当于按照顺序在一个圆圈里遍历了。这种思路的代码如下:int LastRemaining(unsigned int n, unsigned int m){ if(n numbers; for(i = 0... 阅读全文
posted @ 2014-04-04 17:17 猿人谷 阅读(535) 评论(0) 推荐(0)
摘要: 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。分析:第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。第二步:进位,对0加0,0加1,1加0而言,都不会产生进位,只有1加1时,会向前产生1个进位。此时我们刻意想象成是两个数先做位与运算,然后再向左移动一位。第三步:相加的过程依然是重复前面两步,知道不产生进位为止。如下是一段基于循环实现的参考代码:int Add(int num1, int num2){ int sum, carry; do{ sum = num... 阅读全文
posted @ 2014-04-04 16:47 猿人谷 阅读(386) 评论(0) 推荐(0)
摘要: 在Linux下查看磁盘空间使用情况,最常使用的就是du和df了。然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊。1. 如何记忆这两个命令du-Disk Usagedf-Disk Free2. df 和du 的工作原理2.1 du的工作原理du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。2.2 df的工作原理df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针.. 阅读全文
posted @ 2014-04-04 11:05 猿人谷 阅读(56702) 评论(3) 推荐(4)
摘要: 已知ip地址为10.130.89.95,其子网掩码为255.255.255.224,求其网络号、子网号和主机号。要看子网掩码变长在第几节,255.255.255.224是在第四节借了位 把224转换为2进制,windows的计算器科学型能帮你计算。是11100000,借了三位 借了三位,子网个数为2的三次方等于8 即八个子网 其实书上说得挺复杂,我感觉,计算网络号最简单的方法就是 256(这是个固定的数字)除以8(子网个数),等于32 那么,八个子网号就分别是 10.130.89.0 10.130.89.32 10.130.89.64 10.130.89.96 10.130.89.128 10 阅读全文
posted @ 2014-04-04 09:27 猿人谷 阅读(33550) 评论(1) 推荐(1)
  2014年4月3日
摘要: 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路整理一下:最初我们找到数组的第一个数字和最后一个数字。首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动;当相等时,打完收工。这样扫描的顺序是从数组的两端向数组的中间扫描。bool FindNumbersWithS 阅读全文
posted @ 2014-04-03 19:02 猿人谷 阅读(1415) 评论(0) 推荐(0)
摘要: 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.找到排序数组中的第一个K:int GetFirstK(int *data, int length, int k, int start, int end){ if(start > end) return -1; int middleIndex = start + ((end - start) >> 1); int middleData = data[middleIndex]; if(middleDat... 阅读全文
posted @ 2014-04-03 10:17 猿人谷 阅读(435) 评论(0) 推荐(0)
  2014年3月28日
摘要: 题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。看到这道题,我们马上就会想到,要是这个数组是排序的数组就好了。如果是排序的数组,那么我们只要遍历一次就可以统计出每个数字出现的次数,这样也就能找出符合要求的数字了。题目给出的数组没有说是排好序的,因此我们需要给它排序。排序的时间复杂度是O(nlogn),再加上遍历的时间复杂度O(n),因此总的复杂度是O(nlogn)。接下来我们试着看看能不能想出更快的算法。前面思路的时间主要是花在排序上。我们可以创建一个哈希表来消除排序的时间。哈希表的键值(Key)为数组中的数字,值(Value)为该数字对应的次数。有了这个辅助的哈希表之后, 阅读全文
posted @ 2014-03-28 17:22 猿人谷 阅读(587) 评论(0) 推荐(0)
  2014年3月18日
摘要: 一.关于推送通知来源:http://blog.csdn.net/enuola/article/details/8627283推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或 下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。推送的新消息可能是一条信息、一项即将到期的日程或是一份远程服务器上的新数据。在系统上展现的时候,可以显示警告 阅读全文
posted @ 2014-03-18 20:08 猿人谷 阅读(6936) 评论(1) 推荐(1)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 58 下一页