TEMA 5: Problemas y Algoritmos importantes En este apartado vamos a ver una serie de algoritmos de gran importancia en esta asignatura. El dominio de los siguientes algoritmos nos da pie a enfrentarnos a una serie de algoritmos más complejos y cuyo código depende de aquellos. 5.1 Ordenación por selección. +-Algoritmo Orden_selección | | Constante entera n=... | Vector entero a(1..n) | Variable entera x,i,j,h,mayor | | Escribir "Introduzca el vector a ordenar" | +-Para h desde 1 hasta n hacer | | Leer a(h) | +-Finpara | | +-Para k desde 1 hasta n-1 hacer | | mayor <- k | | +-Para j desde k+1 hasta n hacer | | | +-Si a(j)<a(i) entonces mayor <-j | | | +-Finsi | | +-Finpara | | x <- a(j) | | a(j) <- a(i) | | a(i) <- x | +-Finpara | Escribir a +-Final 5.2 Búsqueda Secuencial o Lineal. +-Algoritmo Busqueda_secuencial | | Constante entera n=... | Vector entero a(1..n) | Variable entera x,i,j,h,mayor | | Escribir "Introduzca el valor a buscar" | Leer x | | k <- 0 | +-Repetir | | k <- k+1 | | +-Si a(k)=x entonces | | | Escribir "El dato: ";a; | | | "esta en la posición: ";k | | +-Finsi | +-Hasta que (k=n) or (a(k)=x) +-Final 5.3 Búsqueda Dicotómica o Binaria. +-Algoritmo Búsqueda_dicotómica | | Constante entera n= ... | Vector de enteros a(1..n) | Variable entera x,i,j,m,h | | Escribir "Introduzca el vector a ordenar" | +-Para h desde 1 hasta n hacer | | Leer a(h) | +-Finpara | | Escribir "Introduzca el valor a buscar" | Leer x | | i <- 1 | j <- n | | +-Repetir | | m <-(i+j) div 2 | | +-Si x < a(m) entonces | | | j <- m-1 | | +-Sino | | | i <- m+1 | | +-Finsi | +-Hasta que (a(m)=x or i>j) | | +-Si i>j entonces | | Escribir "El dato a buscar no se encuentra." | +-Finsi | +-Final 5.4 Mezcla de ficheros Ordenados. +-Algoritmo mezcla | | +-Registro estructurado r | | variable cadena clave | | ... | +-Finregistro | | Ficheros de r A,B,C | Variables enteras a,b | | Abrir secuencial A,B,C | Iniciar lectura en A,B | Iniciar escritura en C | | Leer (A,a) | Leer (B,b) | | +-Mientras (NO fin(A) AND NO fin(B)) hacer | | +-Si a.clave < b.clave entonces | | | Escribir (C,a) | | | Leer (A,a) | | +ÄSino | | | Escribir (C,b) | | | Leer (B,b) | | +-Finsi | +-Finmientras | | +-Mientras (NO fin(A)) hacer | | Escribir (C,a) | | Leer (A,a) | +-Finmientras | | +-Mientras (NO fin(B)) hacer | | Escribir (C,b) | | Leer (B,b) | +-Finmientras | | Cerrar A,B,C | +-Final