Java程序语言 顺序查找、二分查找
public class LinearSearch { /** * 顺序查找方法 * @param arr 数组 * @param val 所需要查找的值 * @return 返回查找值的下标 */ public static int linearSearch(int arr[], int val){ for(int i = 0; i < arr.length; i++){ if(val == arr[i]) return i; } return - 1; } public static void main(String[] args){ int []arr = {1, 4, 4, 2, 5, -3, 6, 2}; int index = linearSearch(arr, 5); System.out.println("你所查找的值的下标: " + index); } }
/** * Java 二分查找 * @author wwj * 要求:数组已经排好序 * 效率:较高 */ public class BinarySearch { /** * 二分查找方法 * @param leftIndex 最左边的下标 * @param rightIndex 最右边的下标 * @param val 查找的值 * @param arr 数组 */ public void binaryFind(int leftIndex, int rightIndex, int val, int arr[]){ int midIndex = (leftIndex + rightIndex) / 2; int midVal = arr[midIndex]; if(rightIndex >= leftIndex){ // 如果所查找的值小于中间值,则在左边的有序表中中查找 if(val < midVal){ // 递归 binaryFind(leftIndex, midIndex - 1, val, arr); } // 如果所查找的值大于中间值,则在右边的有序表中查找 else if(val > midVal){ binaryFind(midIndex + 1, rightIndex, val, arr); } else if(val == midVal){ System.out.println("恭喜你,查找到下标" + midIndex); } } } public static void main(String[] args){ int arr[]= {1, 2, 5, 7 , 12}; BinarySearch bf = new BinarySearch(); bf.binaryFind(0, arr.length - 1, 0, arr); } }