技术面试手写代码考题--二分查找
2017-11-15 00:02
211 查看
考题1:二分查找(递归与非递归):
二分查找思想:1.数组从小到大排序;
2.查找的key每次和中间数比较,如果key小于mid,查找mid左侧的数组部分;如果key大于mid,则查找mid右侧的数组部分;如果想等,则直接返回mid.
非递归
输入:排序数组-array,数组大小-asize,查找值-key返回:返回数组中的相应位置,否则返回-1
int BinarySearch(int array[],int aSize,int key){ if(array == NULL||aSize == 0) return -1; int low = 0; int high = aSize - 1; int mid = 0; while(low <= high){ mid = (low + high)/2; if(array[mid] < key) low = mid + 1; else if(array[mid] > key) high = mid - 1; else return mid; } return -1; }
递归
int BinarySearchRecursive(int array[],int low,int high,int key){ if(low > high) return -1; int mid = ( low + high )/2; if(array[mid] == key) return mid; else if(array[mid] < key) return BinarySearchRecursive(array,mid+1,high,key); else return BinarySearchRecursive(array,low,mid-1,key); }
相关文章推荐
- 技术面试常被用来作为手写代码的考题汇总
- 面试中常见的数组的操作:遍历,最值,反转,冒泡排序,二分查找(附代码)
- 分治思想 - 二分搜索技术 - MATLAB代码 list是数据集合,x是要查找的数据。
- 查找技术之线性表 图解和代码实现
- 查找算法系列(一):二分查找( 描述+代码)
- 【整理】二分查找及代码实现
- 标准控件都以手写代码的来实现的技术必将会被淘汰!
- 一个递归和非递归实现二分查找的代码
- 面试OR笔试40——二分查找一个函数解决多个问题
- LeetCode-二分查找面试题目总结
- 归并排序 笔试面试手写代码常考
- 二分查找 -- 代码之美
- 标准控件都以手写代码的来实现的技术必将会被淘汰!
- C/C++ 笔试面试(2)——二分查找
- 二分查找 (最经典代码,及其边界条件的实践分析)
- 二分查找的几个变种(Java代码实现)
- 二分查找java代码
- 自以为漂亮的二分查找代码
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 游戏后台里的通用技术之二分查找和排序