jueves, 20 de noviembre de 2008

Simulación

http://www.sendspace.com/file/vyqdxg

QUEREMOS 10

PROFESORA PALACIOS CUANDO LEA ESTO PONGANOS 100 EN LA EXPO..
GRACIAS...

Implementación , C

void insercionBinaria (int vector[], int n){
int k,primero,aux,ultimo,central,i,e,y=4,x;
for (k=1; k aux=vector[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]

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.