通过二分查找法 找到已排序后的指定元素位置(记录)
二分查找 先排序 后查找
package com.date808;
import java.util.Arrays;
/**
* 二分查找 先排序 后查找
*/
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {12, 45, 6, 3, -9, 7, -65, 4};
System.out.println(Arrays.toString(arr));
selectSort(arr);
System.out.println(Arrays.toString(arr));
int search = search(arr, 45, 0, arr.length-1);
System.out.println("search = " + search);
}
public static int search(int[] arr, int target, int left, int right) {
int mid = (left + right) / 2;
while (left <= right) {
if (arr[mid] > target) {
right = mid - 1;
} else if (arr[mid] < target) {
left = mid + 1;
} else if (arr[mid] == target) {
return mid;
}
mid = (left + right) / 2;
}
if (left > right) {
return -1;
}
return -1;
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}