forma recursiva para poner en práctica la búsqueda binaria.
En una lista de matriz ordenada, comenzando en el índice 1, para ver si la matriz de destino. En las palabras del índice de rentabilidad, 0 en caso contrario.
pensamiento
1. Lineal mesa de selección, por lo general ascendente en orden.
2. El valor intermedio se compara con el valor objetivo.
2.1 Comparación valor intermedio y el valor objetivo, si es igual, se devuelve el subíndice, salida.
2.2 valor de la mediana es mayor que el valor objetivo, y luego continuar a buscar un valor intermedio entre el mínimo y realizar 2.
2.3 el valor intermedio más pequeño que el valor objetivo, a continuación, continúa la búsqueda y el valor intermedio entre un valor máximo, realice 2.
Primera edición (error)
int recursive_bin_ser ( int * Lista, int longitud, int objetivo) { int min = 1. , max = longitud - 1. , MID = (max + min) / 2 ; IF (Lista [MID] == objetivo) volver MID; el otro IF (Lista [MID] <destino) de retorno recursive_bin_ser (MID + + Lista 1. , max- MID, objetivo); el otro de retorno recursive_bin_ser (Lista, medio ; min, objetivo) }
.. // 1 sin procesar de destino no existe.
// 2. Lo que es peor, cada vez que una llamada de función, mínimo, máximo, media serán re-inicializado, de hecho, no es el caso, mínimo, máximo, media min pueden ser una función de la ejecución anterior, como máximo, a mediados.
// Cada función llamada, una función asignada a las variables locales mínimo, máximo, medio. La acción correctiva, en forma de parámetros pasados.
segunda edición
int recursive_bin_ser ( int lista *, int min, int max, int objetivo) { int mediados = (min + max) / 2 ; mientras que (min <= max) { si (lista [mediados] == objetivo) de retorno mediados; más si (lista [MID] <destino) de retorno recursive_bin_ser (lista, mediados + 1 , max, objetivo); otro retorno recursive_bin_ser (lista, min, mid - 1 , diana); } Volver 0 ; }
// 1. Nos min, max como un parámetro función de la forma, cuando se realiza una función recursiva, una función se ha alcanzado el máximo y el mínimo se puede acceder a una función del objeto. Creo que el futuro es tan poco como sea posible en una función recursiva
las variables // declara, sobrecarga de memoria de primer año, y la segunda variable del mismo nombre entre cada función fácil confundir.
//2.while(min <= max) cuando el bucle termina, indica que el objetivo no está en la lista, porque la última min = max, min + 1 es el siguiente paso o max -1;
int () {principal int lista [ 5 ] = { 0 , 1 , 2 , 3 , 4 }; std :: sort (lista, la lista de + 5 ); // 排序 printf ( " % d \ n " , recursive_bin_ser (lista, 1 , 4 , 100 ));
12.30, y que así sea, el sueño roto, sino también como un pueblo de herramientas al día! ! !