/* Inserta ordenadamente elementos en una tabla */ #include #define N 5 /* -------------------------------------------------------------------------*/ // FUNCION Buscar_Insertar // DESCRIPCIÓN // Realiza la búsqueda binaria en una tabla de un valor y // si no lo encuentra lo inserta en su posición de forma ordenada // PARAMETROS // int tabla[] (E/S) - Tabla donde buscar e insertar // int tamano (E) - Número de elmentos de la tabla // int valor (E) - Valor a buscar e introducir // DEVUELVE (int) // 0 - Si el elemento se no esta (entonces se inserta) // 1 - Si el elemento si aparece ( no se inserta) /* -------------------------------------------------------------------------*/ int Buscar_Insertar ( int tabla[], int tamano, int valor ) { int izda,dcha,centro,j; int encontrado; int pos; // Posición donde colocar el nuevo elemento // Proceso caso especial if (tamano == 0) { tabla[0] = valor; return 0; } encontrado = 0; izda = 0; dcha = tamano-1; while ( (izda <= dcha) && ! encontrado ) { centro = ( izda + dcha ) / 2; if ( tabla[centro] == valor ) { encontrado = 1; } else { if ( tabla[centro] > valor ) { dcha = centro -1; } else { izda = centro +1; } } } if (! encontrado ) { if ( tabla[centro] > valor) { pos = centro; } else { pos = centro +1; } // Desplazo si es necesario for (j= tamano-1; j>=pos; j--) { tabla[j+1] = tabla[j]; } // Coloco el valor tabla[pos] = valor; } return encontrado; } void MostrarT ( int Tabla[], int tamano ) { int j; putchar('['); for (j=0; j