jueves, 20 de noviembre de 2008
Implementación , C
int k,primero,aux,ultimo,central,i,e,y=4,x;
for (k=1; k
primero=0;
ultimo=k-1;
//busqueda binaria
while(primero<=ultimo){
central=(int)((primero+ultimo)/2);
if(aux<=vector[central]){
ultimo=central-1;}
else{
primero=central+1;}
}
/*desplazamos a la derecha*/
i=k-1;
while(i>=primero){
vector[i+1]=vector[i];
i=i-1;
}
vector[primero]=aux;
do{
x=1;
gotoxy(1,y);
for(e=0;e<10;e++){
printf("%d ",vector[e]);
getch();
}
y++;
}while(x<1);
}
}
Procedimiento
Suponiendo que se tiene una lista ordenada de n numeros:
[1,2,3,4,6,7,9,10,11]
Se elige el numero a insertar:
8
Posteriormente se divide el número de valores entre dos, para esta caso:
10/2=5
Se compara el valor de la posición [5], con el numero a buscar:
6>=8
Si el número es mayor se corta la lista a partir de la posición [5]:
[7,9,10,11]
4/2=2
Se omite el decimal , por lo tanto buscamos en la posición [2]:
8>=9
Al ser falso se inserta el número antes del 9:
[7,8,9,10,11]
Se elige el numero a insertar:
8
Posteriormente se divide el número de valores entre dos, para esta caso:
10/2=5
Se compara el valor de la posición [5], con el numero a buscar:
6>=8
Si el número es mayor se corta la lista a partir de la posición [5]:
[7,9,10,11]
4/2=2
Se omite el decimal , por lo tanto buscamos en la posición [2]:
8>=9
Al ser falso se inserta el número antes del 9:
[7,8,9,10,11]
Orígenes
El algoritmo de inserción binaria es básicamente una mejora del algoritmo de inserción directa, con la que se reduce el tiempo para ordenad una lista determinada de datos.
Suscribirse a:
Entradas (Atom)