public class 二分法查找冒泡 {
public static void main(String[] args) {
//测试用例
int[] arr = {2, 4, 5, 6, 8, 9, 12, 14, 23, 34, 46, 57, 68, 69, 78};
int key = binarySearch(arr, 4);
System.out.println(key);
}
private static int binarySearch(int[] arr, int key) {
int start = 0;
//因为数组下标从0开始,所以结尾是arr.length-1;
int end = arr.length - 1;
int middle = 0;
while (start <= end) {
//每次没有找到时middle被重新赋值,并且用于之后的循环
middle = (start + end) / 2;
//如果侍查找元素等于数组中间数,则直接返回数组下标
if (key == arr[middle]) {
return middle;
//如果侍查找元素大于数组中间数,则将范围缩小到后一半
} else if (key > arr[middle]) {
start = middle + 1;
//如果侍查找元素小于数组中间数,则将范围缩小到前一半
} else if (key < arr[middle]) {
end = middle - 1;
}
}
return -1;
}
public static int[] bubbleSort(int[] array) {
if (array.length == 0)
return array;
for (int i = 0; i < array.length; i++)
for (int j = 0; j < array.length - 1 - i; j++)
if (array[j + 1] < array[j]) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
return array;
}
}
二分法需先排序
最新推荐文章于 2022-11-11 14:10:26 发布