【算法基础】二分查找
2014-12-18 23:36
381 查看
之前去华为的面试,一上来问了些项目的东西,因为对项目比较了解,没有什么问题,后来让写个二分查找,可能稍微有点紧张,表示竟然一时半会没想出来怎么写,纠结了半天,到底是用递归还是基本用法,后来还是写出来了,虽然用的是基本算法,回来后我觉得还是有必要记录一下,突然觉得自己的基础还是不够牢靠啊。。
首先,要明确的是二分查找的数组必须是经过排序的。要么递增要么递减。下面就是两种二分查找的实现方式:
算法什么的也没有针对性的训练过,看来还是要多巩固一下基础了。。
首先,要明确的是二分查找的数组必须是经过排序的。要么递增要么递减。下面就是两种二分查找的实现方式:
package binsearch; public class BinSearch { /** * 二分查找,找到返回索引,找不到返回-1 * * @param array * 要查找的数组 * @param key * 目标值 * @return */ public static int binarySearch(int[] array, int key) { int begin = 0; int end = array.length - 1; while (begin <= end) { int middle = (end + begin) / 2; if (array[middle] < key) { begin = middle + 1; } else if (array[middle] > key) { end = middle - 1; } else { return middle; } } return -1; } /** * 二分查找 (递归方式) * @param array 查找的数组 * @param key 要找的数值 * @param begin 开始位置 * @param end 结束位置 * @return */ public static int binarySearch(int[] array, int key, int begin, int end) { int midIndex = (begin + end) / 2; if (key < array[begin] || key > array[end] || begin > end) { return -1; } if (key < array[midIndex]) { return binarySearch(array, key, begin, midIndex - 1); } else if (key > array[midIndex]) { return binarySearch(array, key, midIndex + 1, end); } else { return midIndex; } } }
算法什么的也没有针对性的训练过,看来还是要多巩固一下基础了。。
相关文章推荐
- 二分查找--基础算法
- java算法基础--二分查找
- 基础算法-二分查找
- 一步一步复习数据结构和算法基础-顺序查找+二分查找
- Java基础算法:堆排,快排,二分查找
- [ACM] [算法基础] POJ 2503 在线翻译Babelfish(二分查找 字符串)
- 基础算法 - 二分查找 / 二分答案入门
- 基础算法 二分查找
- 基础算法学习(01)-二分查找
- php 基础算法之 二分查找
- [ACM] [算法基础] POJ 4140 方程求解(二分查找)
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- 数据结构&算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)
- Java基础复习 查找算法之二分法
- 算法基础(一)——冒泡,简单选择排序,二分查找
- 基础算法5——二分查找
- Java 基础一些代码练习笔记(二分查找)
- 算法基础编之二分法
- 二分查找算法的实现-分治策略