热门IT资讯网

数组拷贝,二分法查找

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,Arrays.copyOfRange(int[] arr,int开始下标,int结束下标)//左闭右开System.arraycopy(int[] source,int开始下标,int[] dest,
Arrays.copyOfRange(int[] arr,int开始下标,int结束下标)//左闭右开System.arraycopy(int[] source,int开始下标,int[] dest,int开始下标,int拷贝多少个)这里是手动拷贝:public static int[] copyOf(int[] original, int newLength) {    int[] dest = new int[newLength];    int length = original.length <= newLength ? original.length : newLength;    for (int i = 0; i < length; i++) {        dest[i] = original[i];    }    return dest;}mid作为分水岭,  不断地缩小范围// 前提需要数组是有序的public static int binarySearch(int[] a, int v) {    int left = 0;    int right = a.length;    while (left < right) {        int mid = (left + right) / 2;        if (v == a[mid]) {            return mid;        } else if (v < a[mid]) {            right = mid;        } else {            left = mid + 1;        }    }    return -1;}public static int binarySearch3(int[] a, int v) {    int left = 0;    int right = a.length - 1;    while (left <= right) {        int mid = (left + right) / 2;        if (v == a[mid]) {            return mid;        } else if (v < a[mid]) {            right = mid - 1;        } else {            left = mid + 1;        }    }    return -1;}
0