public int getIndex(int[] arr, int targetValue) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == targetValue) {
return i;
}
}
return -1; //索引不存在负数,以此表达无结果
}
2.2 二分查找(折半查找)
//方式一
public int halfSearch(int[] arr, int targetValue) {
int min = 0; //最小索引
int max = arr.length - 1; //最大索引
int mid = (min + max) / 2 ; //中间值索引
while (arr[mid] != targetValue) {
if (arr[mid] < targetValue) {
min = mid + 1;
} else if (arr[mid] > targetValue) {
max = mid - 1;
}
if (min > max) return -1; //最值交叉无法折半,没有找到
mid = (min + max) / 2;
}
return mid;
}
//方式二
public int halfSearch2(int[] arr, int targetValue) {
int min = 0; //最小索引
int max = arr.length - 1; //最大索引
while(min <= max) {
int mid = (min + max) / 2 ; //中间值索引
if (arr[mid] < targetValue) {
min = mid + 1;
} else if (arr[mid] > targetValue) {
max = mid - 1;
} else {
return mid;
}
}
return -1; //若想把 targetValue 插入还保持数组有序,则 -1 改为 min
}