二分搜索的递归和循环实现

来源:互联网 发布:u盘格式化数据恢复 编辑:程序博客网 时间:2024/06/05 18:06

二分搜索,指的是对已经排好序的数据进行搜索,也叫折半查找。下面我用递归和非递归实现了这一个算法

/** * 二分搜索的递归实现 *  * @param a * @param x * @return */public int BSearch(int[] a, int x) {int left = 0, right = a.length - 1;return search(a, x, left, right);}public int search(int[] a, int x, int left, int right) {int mid = (left + right) / 2;if(left>right){return -1;}if (a[mid] == x) {return mid;}if (a[mid] > x) {return search(a, x, left, mid - 1);}elsereturn search(a, x, mid + 1, right);}/** * 二分搜索的循环实现 *  * @param a * @param x * @return */public int search(int[] a, int x) {int left = 0, right = a.length - 1;for (; left <= right;) {int mid = (left + right) / 2;if (a[mid] == x)return mid;if (a[mid] > x) {right = mid - 1;} elseleft = mid + 1;}return -1;}

 

0 0