/*** 普通查找就是一个接一个地找(逐个找),对于数组是否已经排序没有要求*/ public class 普通查找 {public static void main(String[] args) { // 静态初始化一个int数组int[] array = {6,9,2,5,3,8,7}; // 采用逐个查找方法,查找元素8for (int i = 0; i < array.length-1; i++) {if (array[i] == 8){System.out.println("查找的元素的下标是:" + i);return;}}System.out.println("在该数组中没有此元素!");} }
/*** 关于二分法查找是建立在排序基础之上的,二分法查找在java.util.Arrays下面已经写好* 方法名为"binarySearch",我们这里只是分析其原理。*/ public class 二分法查找 {public static void main(String[] args) { // 静态初始化一个int数组int[] array = {2,9,21,55,93,98,117}; // 查找int index = erFenFaChaZhao(array,117);System.out.println(index == -1? "没有找到该元素!":"该元素的下标是:" + index);}/*** 查找数组中的元素* @param array 被查找的数组* @param ele 被查找的元素* @return -1表示没有找到该元素,大于等于0表示被查找元素的下标*/public static int erFenFaChaZhao(int[] array, int ele) {//最初开始元素下标int begin = 0;//最初结束元素下标int end = array.length-1;//在循环体中begin一直在增加,end一直在减少,只要begin <= end就一直循环while (begin <= end){//通过开始元素下标和结束元素下标获取中间元素下标int mid = (begin + end) / 2;//如果中间下标对应的元素正好等于被查找的元素,就返回该下标,并结束方法if (array[mid] == ele){return mid;//如果中间下标对应的元素小于被查找的元素,说明被查找的元素在中间元素的右侧}else if (array[mid] < ele){//重新定位新的开始元素下标begin = mid + 1;//程序运行到此说明中间元素下标对应的元素大于被查找的元素,说明被查找的元素在中间元素的左侧}else {//重新定位结束元素的下标end = mid - 1;}}return -1;} }