Sunteți pe pagina 1din 10

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Defensa


Universidad Nacional Experimental Politcnica de la uerza !rmada Bolivariana
Unefa"#arpano$ Estado %ucre
&en'ua(e de Pro'ramaci)n **
Mtodos de ordenamiento y Bsqueda
(Continuacin de la clase anterior)
Prof. ngel Crespo
Ordenamiento por insercin:
#onsiste en+
,- .omar cada elemento del arre'lo para ser ordenado-
/- &o compara con los 0ue se encuentran en posiciones anteriores a l dentro del arre'lo-
1- %i el elemento con el 0ue se compara es ma2or3menor$ se recorre 4acia la si'uiente posici)n
superior- De lo contrario$ se detiene el proceso de comparaci)n 2a 0ue se encontr) 0ue el
elemento 2a est5 ordenado 2 se coloca en su posici)n-
E(emplo+
#rear un pro'rama 0ue permita ordenar a travs del mtodo de inserci)n 2 de forma ascendente$ los
elementos de un arre'lo de tama6o diez 7,89-
:include;stdio-4<
:include;conio-4<
int main79=
int a>,888?$ n$ i$ ($ aux@
for7iA8@i;n@iBB9=
printf7CiADd""""<C$ i9@
scanf7CDdC$ Ea>i?9@ 33car'a del arre'lo vector-
F
for7iA,@ i;,8@iBB9=
auxAa>i?@ 33primer paso-
(Ai",@
G4ile7a>(?<aux9= 33se'undo paso-
a>(B,?Aa>(?@ 33tercer paso-
(""@
F
a>(B,?Aaux@
F
printf7CordenadasHInC9@
for7iA8@ i;,8@ iBB9=
printf7CDdInC$ a>i?9@
F
'etc479@
F
Ordenamiento por seleccin:
#onsiste en lo si'uiente+
%e busca la posici)n del elemento menor3ma2or de la lista$ para identificarlo dentro de los
dem5s elementos-
Una vez ubicado$ se intercambia con el elemento ubicado en la primera posici)n de la lista-
Busca el se'undo elemento menor3ma2or de la lista-
%e intercambia con el elemento 0ue ocupa la se'unda posici)n en la lista-
%e repite este proceso 4asta 0ue 4aber ordenado toda la lista-
Es de 4acer notar entonces 0ue para cumplir con el ordenamiento por selecci)n$ se debe tener
dominio de la bs0ueda de elementos- En el e(emplo$ se tiene un tipo de bs0ueda secuencial o lineal
7m5s adelante se explica en 0u consiste9-
E(emplo+
#rear un pro'rama 0ue permita ordenar a travs del mtodo de inserci)n 2 de forma ascendente$ los
elementos de un arre'lo de tama6o diez 7,89-
:include;stdio-4<
:include;conio-4<
int men7int a>?$ int n$ int i9= 33primer paso-
int menorA,888@
int ($J@
for7JAi@ J;n@ JBB9=
if7a>J?;menor9=
menorAa>J?@
(AJ@
F
F
return (@
F
main79=
int a>,88?$ n$ i$ posm$ aux@
for 7iA8@ i;,8@ iBB9
scanf7CDdC$ Ea>i?9@ 33car'a del arre'lo-

printf7CordenamientoInC9@
for 7iA8@ i;,8@ iBB9=
posmAmen7a$ ,8$ i9@
auxAa>i?@
a>i?Aa>posm?@ 33se'undo paso-
a>posm?Aaux@
F
for 7iA8@ i;,8@ iBB9=
printf7CDdInC$ a>i?9@
F
'etc479@
F
Bsqueda:
%e refiere al proceso de encontrar dentro de una colecci)n de elementos$ un valor en particular-
.ambin se puede decir 0ue es una operaci)n 0ue tienen por ob(eto la localizaci)n de un elemento
dentro de una estructura de datos-
!l'unos tipos de bs0ueda+
Bsqueda lineal o secuencial:
#onsiste en$ sustancialmente$ comparar cada uno de los elementos con el valor a buscar-
Dado 0ue el arre'lo vector no tiene nin'n orden en particular$ existe la misma probabilidad de 0ue
el valor se encuentre$ 2a sea en el primer elemento 0ue en el ltimo- Por lo tanto$ en promedio$ el
pro'rama tendr5 0ue comparar el valor buscado con la mitad de los elementos existentes-
El mtodo de bs0ueda lineal funciona bien para una colecci)n de elementos pe0ue6a o no
ordenados- Por lo 0ue es ineficiente para colecciones de ma2or tama6o-
E(emplo+
#rear un pro'rama 0ue permita buscar a travs del mtodo de bs0ueda lineal$ un valor dado en un
arre'lo de tama6o diez 7,89-
:include;stdio-4<
:include;conio-4<
:include;stdlib-4<
int bus7int a>?$ int val$ int n9=
int i@
for7iA8@ i;n@ iBB9
if7a>i?AAval9
return i@
return 8@
F
main79=
int a>,88?$ n$ val,$ pos$ i@
printf7Ccuantos valoresH C9@
scanf7CDdC$ En9@
for7iA8@ i;n@ iBB9
a>i?Arand79D,88@ 33car'a de forma
aleatoria el arre'lo-
printf7Cvalor a buscar+ C9@
scanf7CDdC$ Eval,9@
posAbus7a$ val,$ n9@
if7posAA89
printf7Cno encontradoInC9@
else
printf7Cposici)n+ >Dd?""""< DdInC$ pos$
a>pos?9@
printf7Clos valores in'resados son+InC9@
for7iA8@ i;n@ iBB9
printf7C< Dd C$ a>i?9@
printf7CInC9@
'etc479@
F
Bsqueda binaria:
Despus de cada una de las comparaciones elimina la mitad de los elementos en la estructura de
datos ba(o bs0ueda-
,- %e localiza el elemento medio 2 se compara con el valor buscado-
/- %i son i'uales el valor de bs0ueda 4a sido encontrada$ 2 se re'resa el subKndice del arre'lo
correspondiente a dic4o elemento-
1- %i no son i'uales$ el problema se reduce a buscar en una mitad del arre'lo- %i el valor buscado
es menor 0ue el elemento medio del arre'lo$ se se'uir5 buscando en la primea parte del arre'lo$
de lo contrario se buscar5 en la se'unda parte-
L- %i el valor buscado no se encuentra en el subarre'lo especificado 7es la porci)n del arre'lo
ori'inal9$ el al'oritmo se repite en una cuarta parte del arre'lo ori'inal-
En fin$ bs0ueda contina$ 4asta 0ue el valor buscado es i'ual al elemento del medio del subarre'lo$
o 4asta 0ue el subarre'lo 4a 0uedado reducido a un elemento diferente a el valor buscado 7es decir$ el
valor buscado no 4a sido encontrado9-
Es de resaltar 0ue el al'oritmo de bs0ueda binaria es muc4o m5s eficiente$ 2a 0ue permite un
nmero de comparaciones menor$ lo 0ue se traduce en un me(or rendimiento con respecto a la
bs0ueda lineal$ 2 con la diferencia 0ue s)lo es til si los valores est5n ordenados de forma ascendente-
Por lo tanto$ los valores primero deben ordenarse-
Por lo tanto$ en el e(emplo a continuaci)n se tiene$ antes de implementar la bs0ueda$ la llamada a
un ordenamiento tipo burbu(a de forma ascendente-
E(emplo+
#rear un pro'rama 0ue permita buscar a travs del mtodo de bs0ueda binaria$ un valor dado en un
arre'lo de tama6o diez 7,89-
:include;stdio-4<
:include;stdlib-4<
void orden7int a>?$ int i$ int (9= 33funcion ordena el arre'lo vector-
int aux@
auxAa>i?@
a>i?Aa>(?@
a>(?Aaux@
F
int bin7int a>?$ int val$ int l$ int 49=
int cen@
G4ile7l;A49= 33cuarto paso-
cenA7lB493/@
if7valAAa>cen?9 33primer paso-
return cen@ 33se'undo paso-
else if 7val;a>cen?9
4Acen",@
else
lAcenB,@ 33tercer paso-
F
return ",@
F
main79=
int a>,M?$ i$ val$ res$ (@
printf7C#ar'ar valores al arre'lo vectorInC9@
for7iA8@ i;,8@ iBB9
scanf7CDdC$ Ea>i?9@
printf7CNrdenando elementos---InC9@
for7iA8@ i;,8@ iBB9
for7(Ai@ (;,8@ (BB9
if7a>i?<a>(?9
orden7a$ i$ (9@
printf7CMostrando el arre'lo ordenadoInC9@
for7iA8@ i;,8@ iBB9
printf7CValor""< DdInC$ a>i?9@
printf7Cin'rese el valor a buscar+ C9@
scanf7CDdC$ Eval9@
resAbin7a$ val$ 8$ ,89@
if7resOA",9
printf7Cvalor Dd encontrado en >Dd?InC$ a>res?$ res9@
else
printf7Cvalor no encontradoInC9@
F
Ejercicios:
,- Dado un arre'lo de valores enteros$ crear un pro'rama 0ue los muestre de forma descendente a
travs del mtodo de inserci)n 2 0ue permita buscar un valor 'uardado aplicando el mtodo
lineal-
/- %e tiene una lista de diez nombres- #rear un pro'rama 0ue los ordene de forma alfabtica$ 2
0ue adem5s conten'a una funci)n 0ue permita realizar la bs0ueda de un nombre en especKfico-
1- Dados dos arre'los vectores ! 2 B$ 4allar un arre'lo vector #$ donde cada uno de sus
elementos es producto de la suma 2 resta de forma secuencial de sus valores7el primer
elemento de # es producto de la suma de los dos primeros elementos de ! 2 B$ el se'undo de la
resta$ 2 asK sucesivamente9- &ue'o$ se debe implementar un al'oritmo 0ue muestre de forma
ordenadamente ascendente a0uellos valores del vector # 0ue sean menores 0ue un valor /M8-
L- Editar palabra+ dada una palabra$ crear un pro'rama 0ue permita ubicar una letra dentro de ella
dada su posici)n 2 cambiarla por otra letra$ aplicando el mtodo de bs0ueda binaria- E(emplo
e una salida por pantalla+
*n'rese la palabra+ ilustraci)n
&a ubicaci)n a cambiar+ P
&etra sustituta+ p
!4ora la palabra es+ ilustrapi)n
M- %e tiene un re'istro con los si'uientes datos+
nombre$ edad$ cdula-
#rear un pro'rama 0ue permita contener las si'uientes funciones+
*n'resar un re'istro-
Buscar un re'istro por medio de la cdula-
Mostrar la lista en orden alfabtico-
%alir del re'istro-
!l salir$ indicar la cantidad de personas 0ue fueron re'istradas-

S-ar putea să vă placă și