java 折半查找 非递归算法 递归算法

来源:互联网 发布:如何找到域名的ip地址 编辑:程序博客网 时间:2024/05/29 14:10
package datastruct.find;public class BinarySearch {//方法一:非递归折半查找:private static void binarySearch(int a[],int k) {int low=0;int high=a.length-1;int mid;while (low<=high) {  mid=(low+high)/2;if (k==a[mid]) {System.out.println(a[mid]+"在"+mid+"位置");     return;}else {if (k<a[mid]) {high=mid-1;}else {low=mid+1;}}}System.out.println("无法查找到该元素!");}//方法二:使用递归的折半查找private static int binarySearch(int a[],int k,int low,int high ) {if (a.length<=0) {System.out.println("数组内元素为空!");return -1;} if (low>high) {System.out.println("无法查找到该元素!");return -1;}else {int mid=(low+high)/2;if (k==a[mid]) {System.out.println(a[mid]+"在"+mid+"位置");     return mid;}else {if (k<a[mid]) { returnbinarySearch(a, k, low, mid-1);}else { return binarySearch(a, k, mid+1, high);}}     }}     public static void main(String[] args) {int a[]={1,2,3,4,5,6,7};System.out.println("非递归算法:");binarySearch(a, 1);binarySearch(a, 2);binarySearch(a, 3);binarySearch(a, 4);binarySearch(a, 5);binarySearch(a, 6);binarySearch(a, 7);System.out.println("递归算法:");binarySearch(a, 1, 0, a.length-1);binarySearch(a, 2, 0, a.length-1);binarySearch(a, 3, 0, a.length-1);binarySearch(a, 4, 0, a.length-1);binarySearch(a, 5, 0, a.length-1);binarySearch(a, 6, 0, a.length-1);binarySearch(a, 7, 0, a.length-1);}}


运行结果:
                 非递归算法:
                 1在0位置
                 2在1位置
                 3在2位置
                 4在3位置
                 5在4位置
                 6在5位置
                 7在6位置
                 递归算法:
                 1在0位置
                 2在1位置
                 3在2位置
                 4在3位置
                 5在4位置
                 6在5位置
                 7在6位置
阅读全文
0 0
原创粉丝点击