Aviso de copyright
- Autor original de este artículo: hermano menor de Columbia Valley
- Dirección del blog del autor: http://blog.csdn.net/lfdfhl
Análisis de principios
Hay una matriz ordenada {2, 5, 8, 12, 16, 23, 38, 56, 72, 91}, utilice la dicotomía para encontrar el índice correspondiente al elemento 23.
Condición previa
La premisa de la búsqueda binaria es que los elementos de la matriz están ordenados; de lo contrario, no se puede buscar.
Principio de búsqueda
primer paso:
Determine los subíndices máximo, mínimo y medio de toda la matriz.
El segundo paso:
Compare el valor objetivo con el valor correspondiente al subíndice máximo, el valor correspondiente al subíndice mínimo y el valor correspondiente al subíndice del medio
tercer paso:
Ajustar subíndice máximo, subíndice mínimo y subíndice medio
Encontrar proceso
Código
La implementación del código de la búsqueda binaria es la siguiente:
package com.algorithm;
/**
* 本文作者:谷哥的小弟
* 博客地址:http://blog.csdn.net/lfdfhl
*
*/
public class BinarySearch {
public static void main(String[] args) {
int[] intArray = {
2, 5, 8, 12, 16, 23, 38, 56, 72, 91 };
int index = binarySearch(intArray, 23);
System.out.println(index);
}
public static int binarySearch(int[] intArray, int value) {
int max = intArray.length - 1;
int min = 0;
int mid = (max + min) / 2;
while (intArray[mid] != value) {
if (min <= max) {
if (intArray[mid] > value) {
max = mid - 1;
} else if (intArray[mid] < value) {
min = mid + 1;
}
mid = (max + min) / 2;
} else {
System.out.println("未查询到相应数据");
mid = -1;
break;
}
}
return mid;
}
}