日期:2014-05-20 浏览次数:20941 次
public class Test_search { public static void main(String[] args) { int[] a={1,3,6,8,9,10,12,18,20,34}; int i = 12; System.out.println(binarySearch(a,i)); } public static int search(int[] a, int num) { for(int i=0;i<a.length;i++) { if(a[i]==num) { return i; } } return -1; } public static int binarySearch(int[] a,int num) { if(a.length==0) { return -1; } int startPos = 0; int endPos = a.length-1; int m = (startPos + endPos)/2; while(startPos<=endPos) { if(num == a[m]) return m; if(num > a[m]) { startPos = m+1; } if(num < a[m]) { endPos = m-1; } m=(startPos + endPos)/2; } return -1; } }
------解决方案--------------------
public class Test_search { public static void main(String[] args) { int[] a = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 }; for(int i=0; i<13; i++) System.out.println(search(a,i) + " " + binarySearch(a, i)); } public static int search(int[] a, int num) { for (int i = 0; i < a.length; i++) { if (a[i] == num) { return i; } //return -1;把这一行代码移至方法最后return -1; } return -1;// 没有返回 } public static int binarySearch(int[] a, int num) { if (a.length == 0) { return -1; } int startPos = 0; int endPos = a.length - 1; int m = (startPos + endPos) / 2; while (startPos <= endPos) { if (num == a[m]) return m; if (num > a[m]) { startPos = m + 1; } if (num < a[m]) { endPos = m - 1; } m = (startPos + endPos) / 2; } return -1;//没有返回 } } /* -1 -1 0 0 -1 -1 1 1 -1 -1 -1 -1 2 2 -1 -1 3 3 4 4 5 5 -1 -1 6 6 */