二分法查找

来源:互联网 发布:淘宝ecco鞋代购真假 编辑:程序博客网 时间:2024/05/09 20:16

二分法查找。

二分法查找适用于有序排列的数组。每次从中间开始,在想两边进行查找。

二分法的普通方法实现:

public static void main(String args[]){int []a = {0,1,2,3,4,5,6,7,8,9};System.out.println(find(a,5));}public static int find(int []a, int des){int length = a.length - 1;int len = length / 2;while(len <= length){if(a[len] == des)return len + 1;else if(a[len] < des){len = (length + len)/2;}else if(a[len] > des){length = len;len = len / 2;}}return 0;}

二分法的递归实现

public static int find(int a[], int des){int height = a.length - 1;int middle = height / 2;int low = 0;int n = jisuan(a, low, middle, height, des);return n;}public static int jisuan(int a[], int low, int middle, int height, int des){if(middle < height){if(a[middle] == des)return middle;else if(a[middle] > des){return jisuan(a, low, middle / 2, middle, des);}else if(a[middle] < des){return jisuan(a, middle, (middle + height) / 2, height, des);}}return 0;}public static void main(String args[]){int[] a = {1,2,3,4,5,6,7,8,9};int key = find(a, 6);System.out.println(key);}

0 0
原创粉丝点击