Algoritmo de Ordenación por Inserción Binaria
Para cada elemento ai comprendido entre las posiciones 2 y N:
- Se aplica una búsqueda binaria entre las posiciones [1, I-1], para determinar la posición que debería ocupar el elemento a ordenar, respecto a los de dicho intervalo.
- Todos los elementos del intervalo anterior que sean mayores que el que se pretende colocar, se desplazarán una posición a la derecha.
- Se coloca el valor en su nueva posición, ya en orden.
MÓDULO ordenacion_insercion_binaria DATOS PARÁMETROS Transforma V() de tipo T Recibe N entera VARIABLES I, J enteras AUX de tipo T INICIO Para I desde 2 hasta N AUX ← V(I) IZQ ← 1 DER ← I-1 Mientras ( IZQ ≤ DER ) hacer CEN ← (IZQ+DER)\ 2 ** división entera Si ( V(CEN) ≤ AUX ) entonces IZQ ← CEN+1 sino DER ← CEN-1 fin-si fin-mientras J ← I Mientras (J > IZQ) hacer V(J) ← V(J-1) J ← J-1 fin-mientras V(IZQ) ← AUX fin-para FIN
CÓDIGO C
/*Ordena un vector (de menor a mayor) por el método de inserción binaria*/ ordInsBinaria(int *v, int n) { int i, j, aux, izq, der, cen; for(i=1;i<n;i++) { aux=v[i]; izq=0; der=i-1; while(izq<=der) { cen=(izq+der)/2; if(v[cen]>aux) { der=cen-1; } else { izq=cen+1; } } j=i; while(j>izq) { v[j]=v[j-1]; j=j-1; } v[izq]=aux; } }
Comentarios
Publicar un comentario