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