public class ErFenfa {
/**
* 二分法查找数据:在有序的数组中,定义一个最低点,最高点,还有中间点。
* 中间点对应的数据和n比较。如果n的值大,就在右部分查找,如果小,就在左部分查找
* 二分法查找前提是必须是有序的数组
* @param args
*/
public int mySearch(int[] array, int n) {
int low = 0;
int high = array.length;
while (low <= high) {
int mid = (low + high) / 2;
if (array[mid] > n) {
high = mid - 1;
} else if (array[mid] < n) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = { 2, 7, 1, 4, 10, 8, 5, 6, 3, 9 };
for (int i = 0; i <= array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
ErFenfa e = new ErFenfa();
System.out.println(e.mySearch(array, 8));
}
}
算法-二分法查找数据
最新推荐文章于 2024-08-01 14:23:09 发布