数组拷贝,二分法查找
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组拷贝,二分法查找相关的知识,希望对你有一定的参考价值。
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 binarySearch2(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;
}
以上是关于数组拷贝,二分法查找的主要内容,如果未能解决你的问题,请参考以下文章
算法二分法 ② ( 排序数组中查找目标值 | 二分法的经典写法 | 在排序数组中查找元素的最后一个位置 | 二分法的通用模板 )