二分法的前提是:数据量就大,比如在一个很长的字符串中查某个字符;还有就是查找的数据必须是排好序的。
递归
int search(int data, int[] your_array, int low, int high) { int mid = (low+high)/2; if (your_array[mid] > data) { return search(data, your_array, mid+1, high); } else if (your_array[mid] < data) { return search(data, your_array, low, mid-1); } else if (your_array[mid] == data) { return your_array[mid];} else return null; }
迭代 int search(int data, int[] your_array) { int low = 0; int high = your_array.Length; int mid; while(low != high) { mid = (low + high)/2; if (your_array[mid] == data) return data; else { if (your_array[mid] > data) { high = mid - 1;} else if (your_array[mid] < data) { low = mid + 1;} } } return null; }