1. 一亿个数据进行排序,用什么排序方式
答:分批处理,一亿是一万万,分批处理,首先取一万进行快速排序,然后取一万之前进行mergesort
2. N 的前M大
答:当有N个数据,而N又是非常大(比如:千万或者亿),需要找出N条数据的排名最前的M条数据时,可以采用的一种策略。
给定n个数,寻找第k小的数,同时给出时间复杂度
比较常见的算法题,也要考虑到n的大小,说了排序,最大堆,以及partition算法
先选前M个元素组成一个小根堆,然后遍历剩下的数据,如果第i个元素key大于小根堆的根结点,就删除这个根结点,并将元素key插入根结点,调整这个堆使其成为小根堆,然后继续遍历剩下的数据; 最后,小根堆中的元素就是最大的M个元素。
3. 走迷宫
http://blog.csdn.net/u011889952/article/details/44805377
4. do
5. {
6. 若当前位置可通,
则
7. {
8. 将当前位置插入栈顶; // 纳入路径
9. 若该位置是出口位置,则结束; // 求得路径存放在栈中
10. 否则切换当前位置的东邻方块为新的当前位置;
11. }
12. 否则
13. {
若栈不空且栈顶位置尚有其他方向未被探索,
14. 则设定新的当前位置为: 沿顺时针方向旋转 找到的栈顶位置的下一相邻块;
15. 若栈不空但栈顶位置的四周均不可通,
16. 则
17. {
18. 删去栈顶位置; // 从路径中删去该通道块
19. 若栈不空,则重新测试新的栈顶位置,
20. 直至找到一个可通的相邻块或出栈至栈空;
21. }
22. }
}while (栈不空);
4. 递归写一下如何判断回文序列?
回文12321 就是回文
4 bool isPalindrome(char str[], size_t n)
5 {
6 if (n<=1)
7 {
8 return true;
9 }
10 else if (str[0]==str[n-1])
11 {
12 return isPalindrome(str+1,n-2);
13 }
14 else
15 return false;
16 }
5.单例模式 懒汉、饿汉
懒汉:
Class Singleon
{
Private:
Singleon() {};//私有构造函数