技术面试常被用来作为手写代码的考题汇总
来源:互联网 发布:淘宝和天猫哪个好 编辑:程序博客网 时间:2024/05/19 09:11
考题1:二分查找(递归与非递归)
递归方法
int BinSearch(int Array[],int low,int high,int key/*要找的值*/) { if (low<=high) { int mid = (low+high)/2; if(key == Array[mid]) return mid; else if(key<Array[mid]) return BinSearch(Array,low,mid-1,key); else if(key>Array[mid]) return BinSearch(Array,mid+1,high,key); } else return -1; }
非递归方法
int BinSearch(int Array[],int SizeOfArray,int key) { int low=0,high=SizeOfArray-1; int mid; while (low<=high) { mid = (low+high)/2; if(key==Array[mid]) return mid; if(key<Array[mid]) high=mid-1; if(key>Array[mid]) low=mid+1; } return -1; }
考题2:快速排序
快速排序其实有了对线性表的分割算法后,快速排序的算法就很简单了。
#include <stdlib.h> #include <iostream> #include "bub.h" using namespace std; /* 对线性表或字表进行实际分割时,可以按如下步骤进行: 首先,在表的第一个、中间一个与最后一个元素中选取中项,设为P(k),并将P(k)赋给T,再将表中的第一个元素移到p(k)的位置上。 然后设置两个指针i和j分别指向表的起始与最后的位置。反复作以下两步: (1)将j逐渐减小,并逐次比较p(j)与T,直到发现一个p(i)<T为止,将p(j)移动到p(i)的位置上。 (2)将i逐渐增大,并逐次比较p(i)与T,直到发现一个p(i)>T为止,将p(i)移动到p(j)的位置上。 上述两个操作交替进行,直到指针i与j指向同一个位置(即i=j)为止,此时将T移到p(i)的位置上 */ template <class T> void qck(T p[], int n){ int m, i; T *s; if (n > 10) //子表长度大于10,用快速排序 { i = split(p, n); //对表进行分割 qck(p, i); //对前面的子表进行快速排序 s = p + (i + 1); m = n - (i + 1); qck(s, m); //对后面的子表进行快速排序 } else { bub(p, n); } return; } //表的分割 template<class T> static int split(T p[], int n){ int i, j, k, l; T t; i = 0; j = n - 1; k = (i + j) / 2; if ((p[i] >= p[j]) && (p[j] >= p[k])) l = j; else if ((p[i] >= p[k]) && (p[k] >= p[j]))l = k; else l = i; t = p[l]; //选取一个元素为T p[l] = p[i]; while (i != j) { while ((i < j) && p[j] >= t) //逐渐减小j,直到发现p[j]<t j = j - 1; if (i < j) { p[i] = p[j]; i = i + 1; while ((i < j) && (p[i] <= t)) //逐渐增大i,直到发现p[i]>t i = i + 1; if (i < j) { p[j] = p[i]; j = j - 1; } } } p[i] = t; return i; }
考题3:链表反转
考题4:实现atoi()函数
Reference:
http://blog.csdn.net/q3498233/article/details/4419285
http://blog.csdn.net/davebobo/article/details/51170177
http://blog.csdn.net/morewindows/article/details/6684558
blog.csdn.net/davebobo/article/details/64121842
0 0
- 技术面试常被用来作为手写代码的考题汇总
- 技术面试手写代码考题--二分查找
- 技术面试手写代码考题--快速排序
- 面试常考的三个手写代码
- 面试JAVEEE程序员常问的考题
- 面试EJB常考题
- 面试常考题
- android面试常考题
- Servlet面试常考题
- 软件测试常考题汇总
- C++ 笔试面试常考题
- java面试常考题2
- C++ 面试常考题
- 计算机面试、笔试常考题
- 面试常考题---交换变量
- 计算机网络之面试常考题
- 【C++面试】常考题复习
- 计算机网络之面试常考题
- 适配器模式
- 在服务器上(ubuntu)设置scrapy爬虫程序定是执行
- 开心的金明
- 递归(二)
- Java计算器,记事本
- 技术面试常被用来作为手写代码的考题汇总
- alluxio分布式安装
- Hdfs分布式环境搭建与一键安装脚本的编写
- 说说 JavaScript 创建对象的各种模式
- Git常用命令
- 北航计算机机试09迭代求立方根
- allegro学习之总结pcb设计流程
- 腾讯bugly 的crash 上报和umeng的比较(crash监测工具对比,bugly胜)
- 【BZOJ 1115】[POI2009]石子游戏Kam 阶梯nim游戏