package com.bocloud.search;
public class Search {
/**
* 顺序查找
*
* @param objects
* @param object
* @return
*/
public int search(Object[] objects, Object object) {
for (int i = 0; i < objects.length; i++) {
if (objects[i].equals(object)) {
return i;
}
}
return -1;
}
/**
* 有序表二分查找(非递归)
*
* @param array
* @param a
* @return
*/
public int binarySearch(int[] array, int a) {
int low = 0;
int mid = 0;
int flag = -1;
int high = array.length - 1;
while (low <= high) {
mid = (low + high) / 2;
if (array[mid] > a) {
high = mid - 1;
} else if (array[mid] < a) {
low = mid + 1;
} else {
flag = mid;
break;
}
}
return flag;
}
/**
* 有序表二分查找(递归)
*
* @param array
* @param a
* @param low
* @param high
* @return
*/
public int sort(int[] array, int a, int low, int high) {
if (low <= high) {
int mid = (low + high) / 2;
if (a == array[mid]) {
return mid + 1;
} else if (a > array[mid]) {
return sort(array, a, mid + 1, high);
} else {
return sort(array, a, low, mid - 1);
}
}
return -1;
}
}