Clase 04. Ed
Clase 04. Ed
Clase 04. Ed
CLASE 05
ORDENACION Y BUSQUEDA
CONTENIDO
INTRODUCCION
METODOS DE ORDENAMIENTO
METODO DE LA BURBUJA
METODO DE SHELL
METODO QUICK SORT O ORDENACION RAPIDA
ORDENAMIENTO POR INSERCION
ORDENAMIENTO POR SELECCIÓN DEL MENOR
ORDENAMIENTO POR SELECCIÓN DEL MAYOR
METODOS DE BUSQUEDA
BUSQUEDA SECUENCIAL
BUSQUEDA BINARIA
BUSQUEDA BINARIA RECURSIVA
APLICACIONES . EJEMPLOS
Sea una secuencia de n elementos: A1, A2, …, An, en memoria, ordenar a se refiere
a ordenar los contenidos del arreglo A de forma que se tenga
Este metodo consiste en cambiar los valores de A por B y viceversa, esto se logra
utilizando una variable temporal del mismo tipo de datos que contenga
momentaneamente el valor de uno para pasarlo al otro.
Ejemplo
Sean dos numeros X y Y
El menor debe estar en X y el mayor en Y. Si no es asi hacer el intercambio
Sean X= 14, Y =12
inicio
Entero x, y, temp
Leer x , y
escribir x
escribir y
// Intercambio
If( x > y )
temp = x
x =y
y = temp
fin si
Escribir “ el valor de X es:” x
Escribir “ el valor de Y es:” y
fin
METODOS DE ORDENAMIENTO:
60 42 83 25 75
1 2 3 4 5
Paso 1.
60 42 83 25 75
1 2 3 4 5
42 60 83 25 75
1 2 3 4 5
42 60 25 83 75
1 2 3 4 5
42 60 25 75 83
1 2 3 4 5
Findel Paso 1
Paso 2.
42 60 25 75 83
1 2 3 4 5
42 25 60 75 83
1 2 3 4 5
Findel Paso 2
Paso 3.
42 25 60 75 83
1 2 3 4 5
25 42 60 75 83
1 2 3 4 5
Findel Paso 3
25 42 60 75 83
1 2 3 4 5
include <iostream.h>
include <conio.h >
const int MIN = 2;
const int MAX = 10;
int main ( )
int arr MAX ;
int num_elem;
18 11 27 13 9 4 11
1 2 3 4 5 6 7
–
1. En este arreglo primero elegimos el elemento de separacion o pivot como
13.
4 11 27 13 9 18 16
1 2 3 4 5 6 7
4 11 9 13 27 18 16
1 2 3 4 5 6 7
1. Se recorren los elementos del arreglo por el extrmo izquierdo buscando los
mayores que 13.
2. En el arreglo por el extremo izquierdo ya no hay valores mayores que 13
3. De igual formando recorriendo el arreglo por el extrmo derecho ya no
encontramos valores menores que 13.
4 11 9
1 2 3
Y
Mayores que 13
27 18 16
5 6 7
En el Primer subarreglo
El ordenamiento es compara el segundo con el tercero e intercambiar
valores y este subarrego se ordena asi:
4 9 11
1 2 3
16 18 27
5 6 7
4 9 11 13 16 18 27
1 2 3 4 5 6 7
Este metodo se le conoce como Metodo de la baraja òr ser utilizado por lo general
por los jugadores de cartas.
Sea A un arreglo conformado por los elementos A1, A2, A3, . . ., An en memoria.
El metodo consiste en examinar el orden de los elementos si tiene A1, A2, . . . , Ak
en su lugar adecuado y un subarreglo previamento ordenado con elementos A1,
A2, . . ., Ak-1
Pasos de ordenamiento
Paso 1: A1 ya se encuentra ordenado
Paso 2: A2 se inserta antes o depues de A1, de pendiendo si es ascendente o
descendente tal que A1 y A2 ordenados.
Paso3: A3, se inserta, en un lugar adecuado A1, A2 es decir antes que A1,, entre A1
y A2 o despues de A3 y tal que A1, A2, A3 esten ordenados.
.
.
.
Paso n: An, se inserta, en un lugar adecuado A1, A2 , . . . , An-1 tal que A1, A2, A3, …,
An-1 esten ordenados.
El Pseudocodigo correspondiente:
Lo que quiere decir que los elementos 65 y 84 tienen que desplazarse para poder
insertar el elemento 45.
El Pseudocodigo correspondiente:
Paso 3: Encontrar la posicion p del menor n-2 elementos de A3, A4, . . . An-2
Luego se intercambia Ap con An-2
An -2, An -2 , An ya esta ordenados
.
.
.
El Pseudocodigo correspondiente:
METODOS DE BUSQUEDA
Sea A: A1, A2, A3, . . . , AN , es una colección de datos en memoria.
Supongamos que se tiene un valor a buscar.
Buscar significa encontrar la posición que ocupa el valor v en A, y si no se
encuentra esvribir un mensaje indicando El elemento no existe en el arreglo”
La busqueda uede realizarse de dos maneras:
- Busqueda Secuencial
- Busqueda Binaria
BUSQUEDA SECUENCIAL
La accion Buscar
Accion Buscar
Inicio
Pos = 0
Leer v
BUS_SEC(A,n,v,pos)
Si(pos =0)
Escribir v, “no se encuentra el elemento”
sino
Escribir v, “se encontro en la posición : “ pos
Finsi
fin
BUSQUEDA BINARIA
La busqueda es otro metodo que permite buscar de un elemento o elementos en un
arrglo de mayor cantidad de datos. Consiste en determinar el termino central del
arreglo a traves de su posición inicial hasta su posición final.
Ejemplo
Sea el Arreglo A que consta de 11 elementos. Buscar el elemento 80.
56 69 70 72 76 77 80 89 90 92 95
1 2 3 4 5 6 7 8 9 10 11
80 89 90 92 95
1 2 3 4 5
80 89
1 2
Central = (2 +1)/2
Central =1
El elemento central tiene el valor 80, y estees elemento buscado
// Compara dos enteros
int inputcCmp (const void* item1, const void * item2)
void searchArray (int int intArr , int num, const char * searchType, SearchFun
search)
return *(int +9 item1 - (int) item2;
// Programa Principal
int main ( )
int arr MAX;
int num_elem;
num_elem= getNumPoints(MIN,MAX);
input Array(, num_elem);
searchArray(arr, num_elem, “Ordenado” , linearSearch);
qsort(arr, numëlem, sizeof(arr 0, inCmp);
cout<<endl<< El arreglo es ordenado:”<<endl;
showArray(arr, num_elem, “Ordenado”, binarySearch);
return 0;
getch( );
41 48 55 67 85
19. Realizar el ordenamiento de los nombres de las ciudades más importantes del
Perú.
Se pide:
a) Mostrar el arreglo original
b) Mostrar el arreglo ordenado