Anda di halaman 1dari 42

3.

1 Introduccin
Ordenacin Bsqueda Operaciones bsicas Intercalacin Computadora Computacin

Mitad de su tiempo

Por Ej:

Buscar Palabras

Diccionario Directorio Telefnico

Ordenacin

Operacin

organizar

Conjunto de datos Creciente Decreciente

Ordenacin

frecuente usuarios importante aplicacin describe fcilmente registros o archivos aplica vectores(arrays) mayor aplicacin Fcil comprensin algoritmos

Ordenacin

3.2 Ordenacin

Ordenacin

proceso

organizar datos
orden

Ordenacin

operacin frecuente

cantidad de algoritmos eficacia clasificar listas rapidez

Eleccin

algoritmos

tamao vector depende tipo datos cantidad

memoria disponible
Mtodos Ordenacin Directos se usan Burbuja listas pequeas Seleccin Insercin

Indirectos se usan listas grandes Shell Quicksort

3.2.1 Mtodo Burbuja

Compara parejas adyacentes


Intercambia si cumple condicin Recorrerlo todo

Mtodo Burbuja

usa

Variable auxiliar

Mtodo 1:
Desde i=0 hasta n-2 hacer Desde j=0 hasta n-2 hacer Si (vec[j] > vec[j+1]) entonces aux = vec[j] vec[j] = vec[j+1] vec[j+1] = aux Fin_si Fin_desde Fin_desde

Ej 1: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 1) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 1) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

Mtodo 2
Desde i=0 hasta n-2 hacer Desde j=0 hasta n-i-2 hacer Si (vec[j] > vec[j+1]) entonces aux = vec[j] vec[j] = vec[j+1] vec[j+1] = aux Fin_si Fin_desde Fin_desde

Ej 1: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 2) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 2) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

Mtodo 3
BANDERA = F i = 0 Mientras ((BANDERA = F) Y (i<n-2)) hacer BANDERA = V Desde j=0 hasta n-i-2 hacer Si (vec[j] > vec[j+1]) entonces aux = vec[j] vec[j] = vec[j+1] vec[j+1] = aux BANDERA = F Fin_si Fin_desde i = i +1 Fin_mientras

Ej 1: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 3) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo burbuja (Mtodo 3) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

3.2.2 Mtodo de Insercin

Insertar elementos
Consiste

vector

ordenado

Comienza de nuevo

elementos restantes

Mtodo Insercin

Mtodo Baraja

Mtodo Insercin

comparaciones se basa desplazamientos sucesivos

se recorre

todo el vector
desde la posicin 2 se va insertando cada elemento lugar adecuado

Mtodo 1
Desde i=1 hasta n-1 hacer aux = vec[i] k = i-1 sw = falso Mientras ((no sw) y (k>=0)) hacer Si (aux < vec[k]) entonces vec[k+1] = vec[k] k = k-1 Si_no Sw = verdadero Fin_si Fin_mientras vec[k+1] = aux Fin_desde

Ej 1: Realizar la prueba de escritorio utilizando el mtodo de insercin (Mtodo 1) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo de insercin (Mtodo 1) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

Mtodo 2

Desde i=1 hasta n-1 hacer tmp = vec[i] Desde j=i hasta ((j>0) Y (tmp<vec[j-1]))decremento 1 hacer vec[j] = vec[j-1] Fin_desde vec[j] = tmp Fin_desde

Ej 1: Realizar la prueba de escritorio utilizando el mtodo de insercin (Mtodo 2) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo de insercin (Mtodo 2) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

3.2.3 Mtodo de Seleccin

Busca elementos del vector sucesivamente Lo coloca primera posicin

Tambin

utiliza

variable auxiliar

Mtodo 1
Desde i=0 hasta n-2 hacer aux = vec[i] k = i Desde j=i+1 hasta n-1 hacer Si (vec[j] < aux) entonces aux = vec[j] k = j Fin_si Fin_desde vec[k] = vec[i] vec[i] = aux Fin_desde

Ej 1: Realizar la prueba de escritorio utilizando el mtodo de seleccin (Mtodo 1) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo de seleccin (Mtodo 1) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

Mtodo 2
i = 0 mientras (i<N-1) hacer aux= vec[i] k = i j = i mientras j< N-1 hacer j = j + 1 si (vec[j] < aux) entonces aux = vec[j] k = j fin_si fin_mientras vec[k] = vec[i] vec[i] = aux i = i + 1 fin_mientras

Ej 1: Realizar la prueba de escritorio utilizando el mtodo de seleccin (Mtodo 2) para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo de seleccin (Mtodo 2) para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

3.2.4 Mtodo de Shell

mejora mtodo insercin


se utiliza
Mtodo

nro elementos insercin

grande

shell

incrementos

decrecientes

Shell

modifico

saltos contiguos

comparaciones

por
saltos constantes > 1 posicin

k = 0 salto = N/2 mientras (salto > 0) hacer desde i=salto hasta N-1 hacer j = i- salto mientras (j >=0) hacer { k = j + salto si (vec[j] <= vec[k]) entonces j = 0 si_no { aux = vec[j] vec[j] = vec[k] vec[k] = aux fin_si j = j - salto fin_mientras fin_desde salto = (salto) / 2 fin_mientras

Ej 1: Realizar la prueba de escritorio utilizando el mtodo de shell para el siguiente vector vec = {72,64,50,23,84,18,37,99,45}

Ej 2: Realizar la prueba de escritorio utilizando el mtodo shell para el siguiente vector vec = {7, 3, 2, 1, 9, 6, 7, 5, 4}

3.2.5 Mtodo de Ordenacin Rpida (Quicksort)

Mas eficiente Mas veloz Conocido

de los Mtodos de Ordenacin

Mtodo Rpido Ordenamiento por Particin Divide y vencers

Se basa

Se elige

elemento vector

medio

pivote

Por intercambios
Lado izquierdo Sern menores Lado derecho Sern mayores

Q pivote

Q pivote

Hecho esto

dos subvectores

recursividad
procede

ordenacin

ini = 0 fin = N-1 i = ini j = fin pivote = vec[(ini + fin) / 2] mientras (i<=j) hacer mientras (vec[i] < pivote) hacer i = i +1 Fin_mientras Mientras (vec[j] > pivote) hacer J = j -1 Fin_mientras Si (i <= j) entonces aux = vec[j] vec[j] = vec[i] vec[i] = aux i++ j-Fin_si Fin_mientras Si (ini<j) entonces Orde (vec, ini, j) Fin_si Si (fin>i) entonces Orde (vec, i, fin) Fin_si

3.3 Bsquedas

Se refieren

encontrar elementos
dentro conj. Elementos

3.3.1 Bsqueda Secuencial Recorre todo vector primero ltimo

Si encuentra

Elemento Encontrado

Compara cada elemento

el valor deseado
encuentre termine leer vector completo

Vector

no ordenado

Mtodo 1
t = 5 //elemento a buscar n = tamano_vector -1 desde i=0 hasta n-1 hacer si (t == vec[i]) entonces escribir ("Elemento encontrado") escribir("En la posicion"+i); fin_si fin_desde

Mtodo 2
t = 20 //elemento a buscar i = 0 mientras (i<= n) hacer si (t == vec[i]) entonces escribir ("Elemento encontrado") escribir("En la posicion"+i) i = n + 1 si_no i = i +1 fin_si fin_mientras

Mtodo 3
t = 80 n = tamano_vector -1 i = 0 encontrado = falso mientras ((no encontrado) y (i<=n)) hacer si (vec[i]== t) entonces encontrado = verdadero fin_si i = i +1 fin_mientras si (encontrado == verdadero) entonces escribir ("Elemento encontrado") escribir("En la posicion" + i-1); si_no escribir ("Elemento no encontrado) fin_si

3.3.2 Bsqueda Binaria Divide y vencers Examina si encontrado busq. Terminada elemento central caso contrario elemento primera mitad segunda mitad sucesivamente localiza valor deseado

Bsqueda Binaria

Vector Ordenado Mtodo til

grandes cantidades
datos

bajo = 0 alto = n-1 central = ((bajo + alto) / 2) k = valor a buscar mientras ((bajo <= alto) y (vec[central <> k])) hacer si (k < vec[central]) entonces alto = central - 1 sino bajo = central + 1 fin_si central = ((bajo + alto)/2) fin_mientras si (k == vec[cental]) entonces escribir ("Elemento encontrado") si_no escribir ("Elemento no encontrado")

Ej 1: Realizar la prueba de escritorio de la bsqueda binaria ,dado el sgte vector y dato a buscar. vec = {18, 23, 37, 45, 50,64,72,84,99} t=45

Ej 2: Realizar la prueba de escritorio de la bsqueda binaria ,dado el sgte vector y dato a buscar. vec = {1, 2, 3, 4, 5, 6, 7, 7, 9} t=9

3.4.4 Intercalacin de Vectores Proceso de mezclar

2 vectores ordenados

producir

nuevo vector

Compara

ordenado Primer elemento de A Primer elemento de B Sucesivamente elemento por elemento

i=0 j=0 k=0 n = tamano vec1 m = tamano vec2 mientras ((i<n) y (j<m)) hacer si (vec1[i] < vec2[j]) entonces vec3[k] = vec1[i] i = i + 1 sino vec3[k] = vec2[j] j = j + 1 fin_si k = k + 1 fin_mientras si (i < n) entonces desde r = i hasta n hacer vec3[k] = vec1[r] k = k +1 fin_desde sino desde r = j hasta m hacer vec3[k] = vec2[r] k = k +1 fin_desde fin_si

Anda mungkin juga menyukai