SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Métodos de Ordenamiento

Los métodos de ordenamiento son muy útiles porque nos permiten buscar valores, tanto por valor y
por su posición, de una manera eficiente. Imaginen que tan útil seria un diccionario si las palabras
no estuvieran ordenadas alfabéticamente!

Antes de estudiar algunos de los métodos de ordenamiento es necesario definir el problema y el
entorno en el cual se desea trabajar. Para realizar un ordenamiento se necesita un conjunto de
valores ordenables, es decir, que exista un criterio de ordenamiento, por ejemplo las letras se basan
en el alfabeto, los números en la cantidad representada. Además se asume que los valores no
están repetidos [ esto solo para efecto de los ejemplos, ya que la presencia de valores repetidos no
altera el método ]. Además, se trataran solamente métodos de ordenamiento en los que la
instrucción base es la comparación entre dos valores y que se obtiene el ordenamiento por medio
de intercambio de valores. Estas consideraciones son la base de los métodos.

Son muchos los métodos de ordenamiento, sin embargo, en este curso se hará énfasis en los siguientes
métodos: Ordenamiento por selección, por inserción, burbuja.

Para tal efecto asuma las siguientes declaraciones:          y las siguientes asignaciones:

        Type                                                      v[ 1 ] := 6;
            vector = array [ 1 .. 25 ] of integer;                v[ 2 ] := 25;
        Var                                                       v[ 3 ] := 7;
            v        : vector;                                    v[ 4 ] := 2;
            i,j,N,aux,p : integer;                                v[ 5 ] := 14;

                                                                  N := 5;

Ordenamiento por selección

Ref.: Luis Joyanes Aguilar. Programación en Turbo Pascal Ver 5.5, 6.0, 7.0, McGraw-Hill, 2ª.
Edición, 1993, pp. 420-422.
Este método se basa en la búsqueda del primer mayor / menor, del segundo, del tercero y así
sucesivamente hasta agotar la lista de valores a procesar. El algoritmo de ordenación por selección
de una lista tiene los siguientes pasos:


                                                                   { Ordenamiento por seleccion
    1. Encontrar el mayor elemento de la lista                       en forma descendente }
    2. Intercambiar el mayor elemento con el elemento del
                                                                   for i:= 1 to N-1 do
       subíndice 1
                                                                      for j:= i+1 to N do
    3. A continuación se busca el mayor elemento en la
       sublista de subíndices de 2 hasta n y se intercambia con                if v[ i ] < v[ j ] then
       el elemento de subíndice 2; por consiguiente, se sitúa                       begin
       el segundo elemento mayor en la posición 2                                        aux := v[ j ];
    4. A continuación se busca el elemento mayor en la                                   v[ j ] := v[ i ];
       sublista de 3 hasta n, y así sucesivamente                                        v[ i ] := aux;
                                                                                    end;



Realizado por: Ing. Katty Ordaz
Computación II                                                                                         1/10
Nota:
Si desea realizar el ordenamiento de forma ascendente, se sigue el mismo criterio pero en lugar de
intercambiar al encontrar un mayor se intercambia al encontrar un menor. Esto se traduce en cambiar la
condición de > a <.

El método descrito anteriormente realiza cambios cada vez que encuentra un elemento menor o
mayor según sea el caso. Esto puede mejorarse al realizar un solo cambio, después de haber
determinado el mayor / menor elemento y su posición.


  { Ordenamiento por selección mejorado
    en forma descendente }
  for i:= 1 to N-1 do
  begin                                        A continuación se presenta una corrida en frío del
     p := i;                                   algoritmo a fin de observar el movimiento de los
                                               valores en el arreglo hasta quedar ordenados. Note
     aux := v[i];
                                               que se intercambia una sola vez por cada iteración.
     for j:= i+1 to n do                       Los elementos a reubicarse están indicados con las
        if v[ j ] > aux then                   flechas, el elemento resaltado indica la posición del
             begin                             índice.
                p := j;
                aux := v[ j ];
             end;
        v[ p ] := v[ i ];
        v[ i ] := aux;
     end;




Iteración      Descripción del proceso                           Movimiento en el arreglo

                                                           i
      1        Identificado 25 como mayor                   6       25       7        2       14


                                                                   i
      2        Identificado 14 como mayor                  25          6     7        2       14

                                                                             i
      3          Identificado 7 como mayor                 25       14       7        2        6

                                                                                     i
      4          Identificado 6 como mayor                 25       14       7        2       6



                           Resultado: vector ordenado      25       14       7        6        2




Realizado por: Ing. Katty Ordaz
Computación II                                                                               2/10
Ordenamiento por burbuja
Ref: Luis Joyanes Aguilar.        Programación en Turbo Pascal Ver 5.5, 6.0, 7.0, McGraw-Hill, 2ª.
Edición, 1993, pp. 412-417.

Este método es clásico y muy sencillo aunque poco eficiente. La ordenación por burbuja [ bubble
sort ] se basa en:
1.      La comparación de elementos adyacentes del vector e
2.      Intercambio de sus valores si estos están desordenados

De este modo se dice que los valores más pequeños burbujean hacia la parte superior de la lista
[hacia el primer elemento], mientras que los valores más grandes se hunden hacia el fondo de la
lista en el caso de un ordenamiento ascendente.

La técnica de ordenación de la lista por burbuja compara elementos consecutivos de la lista de
modo que si en una pasada no ocurrieran intercambios, significaría que la lista esta ordenada.



  { Ordenamiento por burbuja mejorado
    en forma ascendente }
  desordenado := true;
  while desordenado do
                                                          Pasada 1      Pasada 2      Pasada 3
     begin
        desordenado := false;
        for i:= 1 to n - 1 do                                10             5            5
           if v[ i ] > v[ I + 1 ] then                        5            10            8
                                                              8             8            10
           begin
               aux := v[ i ];
               v[ i ] := v[ i + 1 ];
               v[ i + 1] := aux;
               desordenado := true;
           end;
     end;




Realizado por: Ing. Katty Ordaz
Computación II                                                                            3/10
Ordenamiento
                                                      Parte 2



                                                                            Ordenamiento con Matrices
Las diferentes acciones de ordenamiento sobre elementos de una matriz son:

1. Ordenar una fila / columna K de una matriz ( de M filas y N columnas), sin importar la relación
   entre las columnas / filas de la matriz. En este caso, al realizar el intercambio solamente se
   mueven los elementos de la fila K.




                   10 6          1   8              10 6         1    8           10     6    1    8
                    5 11         3   9       K       5 11        3    9           3      5    9    11
                    4 2          7   12             4 2          7    12          4      2    7    12
                      Matriz Original            Proceso de Ordenamiento           Matriz Modificada



                   Nota: Observe que solamente se ordena la fila K, sin alterar los valores de las columnas
                         correspondientes

                       {
                           Ordenamiento de la fila K de la matriz A
                           de M filas y N columnas
                           Sin importar la relación entre columnas
                       }
                       For i := 1 to N-1 do
                           For j := i + 1 to N do
                               If A[ k, i ] > A[ k, j ] then
                                 Begin
                                     Aux       := A[ k, i ];
                                     A[ k, i ] := A[ k, j ];
                                     A[ k, j ] := Aux;
                                 End;




Prof. María Beatriz Serrano V.                                                                 4/10
Computación II
2. Ordenar una fila / columna K de una matriz ( de M filas y N columnas), manteniendo la relación
   entre las columnas / filas de la matriz. Para mantener esta relación es necesario intercambiar
   todos los elementos de la columna.


                    10 6           1    8          10 6        1     8           1   10 8 6
                    5 11           3    9   K       5 11       3     9           3    5 9 11
                    4 2            7   12          4 2         7    12           7    4 12 2


                         Matriz Original     Proceso de Ordenamiento             Matriz Modificada

                   Nota: Observe que ordena la fila K, sin embargo para mantener la relación con las columnas
                         correspondientes es necesario intercambiar las columnas completas.

                          {
                              Ordenamiento de la fila K de la matriz A
                              de M filas y N columnas
                              Manteniendo la relación entre columnas
                          }
                          For i := 1 to N-1 do
                              For j := i + 1 to N do
                                  If A[ k, i ] > A[ k, j ] then
                                     {
                                       Intercambio de la columna i con la columna j
                                     }
                                     For s := 1 to M do
                                        Begin
                                             Aux       := A[ s, i ];
                                             A[ s, i ] := A[ s, j ];
                                             A[ s, j ] := Aux;
                                        End;

3. Ordenar todos los elementos de una matriz de M filas y N columnas.                     En este caso no puede
   ordenarse sobre la misma matriz

                     Matriz Original                Proceso                     Matriz Modificada

                    10        6    1    8                                       1     2      3       4
                    3         5    9   11                                       5    6      7       8
                    4         2    7   12                                       9    10     11      12

                                       10                                        1
                                       6          PASO 2:                        2
                                       1          Ordenar vector                 3
                                       8                                         4
         PASO 1:                       3                                         5
         Copiar matriz                 5                                         6         PASO 3:
         en vector                     9                                         7         Copiar vector
                                       11                                        8         en matriz
                                       4                                         9
                                       2                                        10
                                       7                                        11
                                       12                                       12
Prof. María Beatriz Serrano V.                                                               5/10
Computación II
{
                            Ordenamiento de todos los elementos de
                            la matriz A de M filas y N columnas
                        }
                             {
                                 Paso 1: Copiar matriz en vector
                             }
                                 NV := 0;
                                 For i := 1 to M do
                                    For j := 1 to N do
                                        Begin
                                           NV := NV + 1;
                                           B[ NV ] := A[ i, j ]
                                        End;
                             {
                                 Paso 2: Ordenar el vector
                             }
                             For i := 1 to NV-1 do
                                For j := i + 1 to NV do
                                    If B[ i ] > B[ j ] then
                                       Begin
                                           Aux      := B[ i ];
                                           B[ i ] := B[ j ];
                                           B[ j ] := Aux;
                                       End;
                             {
                                Paso 3: Copiar vector en matriz
                             }
                                NV := 0;
                                For i := 1 to M do
                                    For j := 1 to N do
                                       Begin
                                           NV := NV + 1;
                                           A[ i, j ] : = B[ NV ];
                                       End;




Prof. María Beatriz Serrano V.                                       6/10
Computación II
Ejercicios de Ordenamiento

 1. Dado un arreglo de N elementos, elabore un programa que ordene el arreglo e imprima el
    arreglo original y el ordenado uno al lado del otro.
                               Desordenado               Ordenado
                                    20                      10
                                    40                      20
                                    90                      30
                                    10                      40
                                    50                      50
                                    80                      70
                                    70                      80
                                    30                      90
2. Se tiene en un archivo de nombre muestra.dat un conjunto de valores desordenados entre sí y
   se desea un programa Pascal que determine la mediana de dichos valores. La mediana es el
   valor tal que ocupa la posición central del vector una vez ordenado; en caso de existir dos
   elementos centrales, la mediana es el promedio de estos.
                                  A=    1   2           3   4    6    8    9         N=7
                                  Mediana = 4
                                  A=      1    2        3   4    6    8    9    12     N=8
                                  Mediana = (4+6)/2=5.0
3. Elabore un programa Pascal tal que dados los valores enteros de N observaciones a un
    experimento, determine e imprima la mediana de aquellos valores que terminan en 15
                                  A=     100 115 200 315 215 130                     Mediana = 215

                                  A=     105 215 115 120 127 170                     Mediana = 165
 4. Se tiene en un archivo de datos la información correspondiente a las coordenadas X y Y de los
    puntos de un juego de tiro al blanco. Elabore un programa que ordene los valores X
    manteniendo su relación con los valores Y, imprima los puntos y determine la mediana de los
    valores de X; ¿podría Ud. determinar en estas condiciones la mediana de Y?
5. Dada la información correspondiente a las edades de un grupo de personas. Elabore un
   programa Pascal que determine la mayor edad y que ordene las edades a partir de la posición
   del mayor. Imprima los dos vectores el original y el modificado.

                       Edad               15       17       16   13   12   10

                       Edad modificado    15       10       12   13   16   17

6. Dado un vector A de N elementos, elabore un programa Pascal que calcule la posición del mayor
   y el menor valor. Si el menor elemento se encuentra antes del mayor elemento, ordene el
   vector ascendentemente a partir de la posición del menor hasta la posición del mayor; si el
   menor elemento se encuentra después del mayor valor, ordene descendentemente a partir de
   la posición del mayor valor hasta la posición del menor valor.
             Vector Original       A=    -1    4    10      2    4    -2   9

             Vector Ordenado       A=    -1    4    10      4    2    -2   9


Prof. Manuel R. Fernández R.                                                                  7/10
Computación II
7. El empecinado Sr. Fasti, quiere desarrollar un programa para ordenar ascendentemente el
     vector V de M elementos, que esta en paralelo con el vector W, de atrás hacia adelante; es
     decir comenzando de las posiciones finales (M) hacia el principio. Pero este ordenamiento solo
     debe realizarse para la porción comprendida entre las posiciones K y L del vector [ K < L ] y
     debe mantener la relación con su vector paralelo. Desarrolle el Diagrama de Flujo de un
     programa que realice esa tarea. A continuación se presenta un ejemplo:
                                 V        W                     V           W
                                 2           20                2          20
                                 4           40                4          40
                           K     9           -90               9          -90
                                 1           -10               8          80
                                 5           50                5          50
                           L     8           80                1          -10
                                 7           70                7          70
                                 3           30                3          30

                                     ANTES                          DESPUÉS
8. Una entidad bancaria se encarga de cancelar las pensiones a los jubilados de una empresa. El
   pago se realiza en función de la centena de la cédula de identidad del pensionado, de la
   siguiente forma:
             1 y 6: Lunes       2 y 7: Martes        3 y 8: Miércoles
             4 y 9: Jueves      5 y 0: Viernes
     Elabore un programa Pascal que dado un grupo de datos con la siguiente información: Nombre,
     Cédula y Monto de la Pensión imprima un listado por día donde se muestre:
     Día: XXXXXXXX
     Número de Pensionados: XXX
              ----- Nombre ------- -- Cédula - - Monto –
              XXXXXXXXXXXXXXX XXXXXXXX XXXXXXX
                     :                   :              :
              XXXXXXXXXXXXXXX XXXXXXXX XXXXXXX
                                                -----------
                                         Total: XXXXXXX
    El listado deberá contener los encabezados adecuados y no más de 40 personas por página ni
    más de un día de la semana por página.
9. Dada una matriz de orden N, elabore un programa que ordene la fila donde se encuentra el
   menor elemento, sin importar la relación entre las columnas.
10. Dada una matriz de orden N, elabore un programa que ordene la columna donde se encuentra
    el mayor elemento, sin importar la relación entre las columnas.
11. Dada una matriz de orden N, elabore un programa que ordene la fila donde se encuentra el
    menor elemento, manteniendo la relación entre las columnas.
12. Dada una matriz de orden N, elabore un programa que ordene la columna donde se encuentra
    el mayor elemento, manteniendo la relación entre las columnas.
13. Dada una matriz de orden N, elabore un programa que ordene los elementos ubicados en la
    diagonal principal
14. Dada una matriz de M filas y N columnas, elabore un programa que ordene los elementos de
    cada fila a partir de la posición del menor elemento.
15. Dada una matriz de M filas y N columnas, elabore un programa que ordene los elementos de
    cada columna a partir de la posición del elemento de la diagonal secundaria.




Prof. Manuel R. Fernández R.                                                    8/10
Computación II
16. Dada la información de los estudiantes de Computación: Cédula de identidad, nombre, y N
    (N > 8) quices, elabore un programa con subprogramas que determine el promedio de los 8
    mejores quices para cada estudiante.
17. Dada la información de los estudiantes de Computación: Cédula de identidad, nombre, sección
    y N (N > 8) quices, elabore un programa con subprogramas que ordene la información por
    sección y dentro de cada sección por nombre
18. Dada la información de los estudiantes de la Facultad: Nombre y Fecha de Nacimiento (dia,
    mes, año) elabore un programa con subprogramas que ordene por fecha de nacimiento y al
    final determine quien es el nombre del estudiante con mayor edad.
19. a) Elabore una Función que permita ubicar el elemento menor de un vector A de N
    componentes a partir de la posición K.
     b) Elabore un Procedimiento que permita intercambiar dos elementos de un vector.
     c) Elabore un Procedimiento que permita intercambiar dos filas K y L de una matriz
     d) Elabore un Programa PASCAL que permita leer los datos de M estudiantes (Cédula y las
     notas de los tres parciales), las cédulas en un vector y las notas en una matriz. Ordene la
     información en forma creciente según el promedio de notas de los parciales haciendo uso
     exclusivamente de los 3 subprogramas anteriores. Imprimir la información ya ordenada.
20. a) Desarrolle un subprograma PASCAL que lea una matriz R de LxK elementos.
     b) Desarrolle un subprograma PASCAL que imprima una matriz Q de KxL elementos.
     c) Dada una matriz H de MxN elementos, un vector fila Q de N elementos y un valor K
     (1 ≤ K ≤ M+1), elabore un subprograma en PASCAL que modifique la matriz de la siguiente
     forma:
                 Si 1 ≤ K ≤ M, inserte el vector en la fila K
                 Si K=M+1, anexe el vector colocándolo como última fila de la matriz
     d) Dada una matriz A de orden PxQ y tres valores enteros K, L y M, elabore un subprograma
     PASCAL que ordene la fila K a partir de la columna L hasta la columna M de la matriz.
     e) Dada una matriz Z de orden K, elabore un subprograma PASCAL que usando el subprograma
     anterior, ordene cada fila a partir del elemento ubicado en la diagonal secundaria.

                           0 −1   2 − 6     0 −1 2 − 6
                                                        
                           8  1 − 3 − 1     8  1 − 1 − 3
                       Z =             ⇒Z =             
                          10  8   3   4     10 3 4     8
                                                        
                           0  3 −4    1    − 4 0   1   3

     f) Dada una matriz C de orden K, elabore una función en PASCAL que calcule la suma de los
     elementos de la triangular inferior.

     g) Dada una matriz C de orden K, elabore una función en PASCAL que calcule la suma de los
     elementos de la triangular superior.

     h) Dada una matriz AB de orden M, elabore un programa PASCAL que lea la matriz y si la suma
     de los elementos de la triangular inferior son iguales a la suma de los elementos de la triangular
     superior, ordene las filas de la matriz a partir de los elementos de la diagonal secundaria, sino,
     inserte un vector de elementos nulos en la primera fila de la matriz.


Prof. Manuel R. Fernández R.                                                       9/10
Computación II
21. a) Desarrolle un subprograma PASCAL tipo función que dada una matriz A de MxN y un valor
    escalar K, determine el menor valor de la fila K.

                                    11 5 9 
                                            
                               A = 13 20 15  Para K = 2, el menor valor es 13
                                   1 8 7
                                            


    b) Desarrolle un subprograma que dada una matriz A de LxP, genere un vector Z donde cada
    elemento sea igual a la suma de los elementos de cada fila mayores al valor mínimo. Debe usar
    el subprograma anterior.
                                     11 5 9            20 
                                                       
                                A = 13 20 15      Z =  35 
                                    1 8 7              15 
                                                       

    c) Desarrolle un subprograma tipo procedimiento que dada una matriz A de LxP elementos y un
    vector Z de L componentes, ordene el vector en forma descendente, manteniendo la relación
    con las componentes de las filas de la matriz.


                     11 5 9              20        13 20 15             35 
                                                                        
                A = 13 20 15        Z =  35  ⇒ A =  11 5 9         Z =  20 
                    1 8 7                15        1 8 7                15 
                                                                        

    d) Desarrolle un programa Pascal que haciendo uso de los subprogramas anteriores y los que
    Ud. considere necesarios, haga lo siguiente:

         i)   Lea el contenido de una matriz C de NxM, donde N representa el número de vendedores
              den una empresa y M la cantidad de diferentes artículos que vende la tienda; el
              contenido [I,J] de la matriz corresponderá a la cantidad vendida del artículo J por el
              vendedor I. M y N son conocidos y son valores de entrada.
         ii) Calcule el promedio de ventas de cada vendedor, el cual será igual a:

                                 Suma de Ventas - Venta Menor
                                            M -1

         iii) Ordene el vector en forma descendente, manteniendo la relación con las componentes de
              las filas.
         iv) Imprimir la matriz y el vector promedio uno al lado del otro.




Prof. Manuel R. Fernández R.                                                          10/10
Computación II

Más contenido relacionado

La actualidad más candente

Ecuaciones diferenciales tecnicas
Ecuaciones diferenciales tecnicasEcuaciones diferenciales tecnicas
Ecuaciones diferenciales tecnicasElver Garcia
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Formulario de intervalos de confianza 2012-2 (1)
Formulario de intervalos de confianza 2012-2 (1)Formulario de intervalos de confianza 2012-2 (1)
Formulario de intervalos de confianza 2012-2 (1)ITS CONSULTORIAS S.A.C
 
Calculo 1 calculo de una variable
Calculo 1 calculo de una variableCalculo 1 calculo de una variable
Calculo 1 calculo de una variablejose_rock
 
Solución de Sistemas Lineales Método Matriz inversa
Solución de Sistemas Lineales Método Matriz inversaSolución de Sistemas Lineales Método Matriz inversa
Solución de Sistemas Lineales Método Matriz inversainsutecvirtual
 
Calculo linea recta minimos cuadrados
Calculo linea recta minimos cuadradosCalculo linea recta minimos cuadrados
Calculo linea recta minimos cuadradosFIDEL GUEVARA LARA
 
Operador anulador
Operador anuladorOperador anulador
Operador anuladorgermane123
 
DERIVADAS PARCIALES Y LOGARITMICAS
DERIVADAS PARCIALES Y LOGARITMICASDERIVADAS PARCIALES Y LOGARITMICAS
DERIVADAS PARCIALES Y LOGARITMICASDarmelis
 
Tabla de propiedades de la transformada de laplace
Tabla de propiedades de la transformada de laplaceTabla de propiedades de la transformada de laplace
Tabla de propiedades de la transformada de laplaceAngel Perez
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones linealesalgebra
 
5. arboles binarios
5. arboles binarios5. arboles binarios
5. arboles binarioselcapo2008
 
Estática, equilibrio y torció
Estática, equilibrio y torcióEstática, equilibrio y torció
Estática, equilibrio y torcióJuliaArvizu
 

La actualidad más candente (20)

Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Ecuaciones diferenciales tecnicas
Ecuaciones diferenciales tecnicasEcuaciones diferenciales tecnicas
Ecuaciones diferenciales tecnicas
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Limites y-continuidad
Limites y-continuidadLimites y-continuidad
Limites y-continuidad
 
Formulario de intervalos de confianza 2012-2 (1)
Formulario de intervalos de confianza 2012-2 (1)Formulario de intervalos de confianza 2012-2 (1)
Formulario de intervalos de confianza 2012-2 (1)
 
vectores-unidimensionales
vectores-unidimensionalesvectores-unidimensionales
vectores-unidimensionales
 
Calculo 1 calculo de una variable
Calculo 1 calculo de una variableCalculo 1 calculo de una variable
Calculo 1 calculo de una variable
 
Solución de Sistemas Lineales Método Matriz inversa
Solución de Sistemas Lineales Método Matriz inversaSolución de Sistemas Lineales Método Matriz inversa
Solución de Sistemas Lineales Método Matriz inversa
 
Integral definida
Integral definidaIntegral definida
Integral definida
 
Calculo linea recta minimos cuadrados
Calculo linea recta minimos cuadradosCalculo linea recta minimos cuadrados
Calculo linea recta minimos cuadrados
 
Operador anulador
Operador anuladorOperador anulador
Operador anulador
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
DERIVADAS PARCIALES Y LOGARITMICAS
DERIVADAS PARCIALES Y LOGARITMICASDERIVADAS PARCIALES Y LOGARITMICAS
DERIVADAS PARCIALES Y LOGARITMICAS
 
Tabla de propiedades de la transformada de laplace
Tabla de propiedades de la transformada de laplaceTabla de propiedades de la transformada de laplace
Tabla de propiedades de la transformada de laplace
 
Tematicas del 3er corte
Tematicas del 3er corteTematicas del 3er corte
Tematicas del 3er corte
 
Lista simple
Lista simpleLista simple
Lista simple
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
 
5. arboles binarios
5. arboles binarios5. arboles binarios
5. arboles binarios
 
Estática, equilibrio y torció
Estática, equilibrio y torcióEstática, equilibrio y torció
Estática, equilibrio y torció
 

Destacado

Destacado (7)

Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
 
Tipos De Datos Abstractos
Tipos De Datos AbstractosTipos De Datos Abstractos
Tipos De Datos Abstractos
 
Guia Ejercicios Basicos Programacin Ii 1
Guia Ejercicios Basicos  Programacin Ii 1Guia Ejercicios Basicos  Programacin Ii 1
Guia Ejercicios Basicos Programacin Ii 1
 
Algortimos De Ordenamiento
Algortimos De OrdenamientoAlgortimos De Ordenamiento
Algortimos De Ordenamiento
 
El cálculo louis leithold (7ma edición)
El cálculo   louis leithold (7ma edición)El cálculo   louis leithold (7ma edición)
El cálculo louis leithold (7ma edición)
 
solucionario calculo de leithold
solucionario calculo de leitholdsolucionario calculo de leithold
solucionario calculo de leithold
 
Array list en java, con ejemplos jarroba
Array list en java, con ejemplos   jarrobaArray list en java, con ejemplos   jarroba
Array list en java, con ejemplos jarroba
 

Similar a Ordenamiento

metodosdeordenamiento.pptx
metodosdeordenamiento.pptxmetodosdeordenamiento.pptx
metodosdeordenamiento.pptxLeydiCardona3
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Alma Lopez
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfjorgeulises3
 
Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Linio Colquehuanca Rodrigo
 
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Rubi Veronica Chimal Cuxin
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamientoOrlando Torres
 
Algoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaAlgoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaCesar Gonzalez
 
estructura de estructura de datos
estructura de estructura de datosestructura de estructura de datos
estructura de estructura de datosAnnette Ponzon
 
array
arrayarray
arraymario
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 

Similar a Ordenamiento (20)

Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
metodosdeordenamiento.pptx
metodosdeordenamiento.pptxmetodosdeordenamiento.pptx
metodosdeordenamiento.pptx
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Axiomas De Peano
Axiomas De PeanoAxiomas De Peano
Axiomas De Peano
 
Axiomas De Peano
Axiomas De PeanoAxiomas De Peano
Axiomas De Peano
 
Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Arrays metodos deordenamiento01
Arrays metodos deordenamiento01
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)Tiempo de ejecucion de particiones (quicksort)
Tiempo de ejecucion de particiones (quicksort)
 
Programación dinámica presentación
Programación dinámica presentaciónProgramación dinámica presentación
Programación dinámica presentación
 
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
 
Ordenamiento Simple
Ordenamiento SimpleOrdenamiento Simple
Ordenamiento Simple
 
Tecnicas de conteo
Tecnicas de conteoTecnicas de conteo
Tecnicas de conteo
 
Ordenamiento
OrdenamientoOrdenamiento
Ordenamiento
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Algoritmo de quicksort
Algoritmo de quicksortAlgoritmo de quicksort
Algoritmo de quicksort
 
Algoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaAlgoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busqueda
 
estructura de estructura de datos
estructura de estructura de datosestructura de estructura de datos
estructura de estructura de datos
 
Metodo burbuja C++
Metodo burbuja C++Metodo burbuja C++
Metodo burbuja C++
 
array
arrayarray
array
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 

Ordenamiento

  • 1. Métodos de Ordenamiento Los métodos de ordenamiento son muy útiles porque nos permiten buscar valores, tanto por valor y por su posición, de una manera eficiente. Imaginen que tan útil seria un diccionario si las palabras no estuvieran ordenadas alfabéticamente! Antes de estudiar algunos de los métodos de ordenamiento es necesario definir el problema y el entorno en el cual se desea trabajar. Para realizar un ordenamiento se necesita un conjunto de valores ordenables, es decir, que exista un criterio de ordenamiento, por ejemplo las letras se basan en el alfabeto, los números en la cantidad representada. Además se asume que los valores no están repetidos [ esto solo para efecto de los ejemplos, ya que la presencia de valores repetidos no altera el método ]. Además, se trataran solamente métodos de ordenamiento en los que la instrucción base es la comparación entre dos valores y que se obtiene el ordenamiento por medio de intercambio de valores. Estas consideraciones son la base de los métodos. Son muchos los métodos de ordenamiento, sin embargo, en este curso se hará énfasis en los siguientes métodos: Ordenamiento por selección, por inserción, burbuja. Para tal efecto asuma las siguientes declaraciones: y las siguientes asignaciones: Type v[ 1 ] := 6; vector = array [ 1 .. 25 ] of integer; v[ 2 ] := 25; Var v[ 3 ] := 7; v : vector; v[ 4 ] := 2; i,j,N,aux,p : integer; v[ 5 ] := 14; N := 5; Ordenamiento por selección Ref.: Luis Joyanes Aguilar. Programación en Turbo Pascal Ver 5.5, 6.0, 7.0, McGraw-Hill, 2ª. Edición, 1993, pp. 420-422. Este método se basa en la búsqueda del primer mayor / menor, del segundo, del tercero y así sucesivamente hasta agotar la lista de valores a procesar. El algoritmo de ordenación por selección de una lista tiene los siguientes pasos: { Ordenamiento por seleccion 1. Encontrar el mayor elemento de la lista en forma descendente } 2. Intercambiar el mayor elemento con el elemento del for i:= 1 to N-1 do subíndice 1 for j:= i+1 to N do 3. A continuación se busca el mayor elemento en la sublista de subíndices de 2 hasta n y se intercambia con if v[ i ] < v[ j ] then el elemento de subíndice 2; por consiguiente, se sitúa begin el segundo elemento mayor en la posición 2 aux := v[ j ]; 4. A continuación se busca el elemento mayor en la v[ j ] := v[ i ]; sublista de 3 hasta n, y así sucesivamente v[ i ] := aux; end; Realizado por: Ing. Katty Ordaz Computación II 1/10
  • 2. Nota: Si desea realizar el ordenamiento de forma ascendente, se sigue el mismo criterio pero en lugar de intercambiar al encontrar un mayor se intercambia al encontrar un menor. Esto se traduce en cambiar la condición de > a <. El método descrito anteriormente realiza cambios cada vez que encuentra un elemento menor o mayor según sea el caso. Esto puede mejorarse al realizar un solo cambio, después de haber determinado el mayor / menor elemento y su posición. { Ordenamiento por selección mejorado en forma descendente } for i:= 1 to N-1 do begin A continuación se presenta una corrida en frío del p := i; algoritmo a fin de observar el movimiento de los valores en el arreglo hasta quedar ordenados. Note aux := v[i]; que se intercambia una sola vez por cada iteración. for j:= i+1 to n do Los elementos a reubicarse están indicados con las if v[ j ] > aux then flechas, el elemento resaltado indica la posición del begin índice. p := j; aux := v[ j ]; end; v[ p ] := v[ i ]; v[ i ] := aux; end; Iteración Descripción del proceso Movimiento en el arreglo i 1 Identificado 25 como mayor 6 25 7 2 14 i 2 Identificado 14 como mayor 25 6 7 2 14 i 3 Identificado 7 como mayor 25 14 7 2 6 i 4 Identificado 6 como mayor 25 14 7 2 6 Resultado: vector ordenado 25 14 7 6 2 Realizado por: Ing. Katty Ordaz Computación II 2/10
  • 3. Ordenamiento por burbuja Ref: Luis Joyanes Aguilar. Programación en Turbo Pascal Ver 5.5, 6.0, 7.0, McGraw-Hill, 2ª. Edición, 1993, pp. 412-417. Este método es clásico y muy sencillo aunque poco eficiente. La ordenación por burbuja [ bubble sort ] se basa en: 1. La comparación de elementos adyacentes del vector e 2. Intercambio de sus valores si estos están desordenados De este modo se dice que los valores más pequeños burbujean hacia la parte superior de la lista [hacia el primer elemento], mientras que los valores más grandes se hunden hacia el fondo de la lista en el caso de un ordenamiento ascendente. La técnica de ordenación de la lista por burbuja compara elementos consecutivos de la lista de modo que si en una pasada no ocurrieran intercambios, significaría que la lista esta ordenada. { Ordenamiento por burbuja mejorado en forma ascendente } desordenado := true; while desordenado do Pasada 1 Pasada 2 Pasada 3 begin desordenado := false; for i:= 1 to n - 1 do 10 5 5 if v[ i ] > v[ I + 1 ] then 5 10 8 8 8 10 begin aux := v[ i ]; v[ i ] := v[ i + 1 ]; v[ i + 1] := aux; desordenado := true; end; end; Realizado por: Ing. Katty Ordaz Computación II 3/10
  • 4. Ordenamiento Parte 2 Ordenamiento con Matrices Las diferentes acciones de ordenamiento sobre elementos de una matriz son: 1. Ordenar una fila / columna K de una matriz ( de M filas y N columnas), sin importar la relación entre las columnas / filas de la matriz. En este caso, al realizar el intercambio solamente se mueven los elementos de la fila K. 10 6 1 8 10 6 1 8 10 6 1 8 5 11 3 9 K 5 11 3 9 3 5 9 11 4 2 7 12 4 2 7 12 4 2 7 12 Matriz Original Proceso de Ordenamiento Matriz Modificada Nota: Observe que solamente se ordena la fila K, sin alterar los valores de las columnas correspondientes { Ordenamiento de la fila K de la matriz A de M filas y N columnas Sin importar la relación entre columnas } For i := 1 to N-1 do For j := i + 1 to N do If A[ k, i ] > A[ k, j ] then Begin Aux := A[ k, i ]; A[ k, i ] := A[ k, j ]; A[ k, j ] := Aux; End; Prof. María Beatriz Serrano V. 4/10 Computación II
  • 5. 2. Ordenar una fila / columna K de una matriz ( de M filas y N columnas), manteniendo la relación entre las columnas / filas de la matriz. Para mantener esta relación es necesario intercambiar todos los elementos de la columna. 10 6 1 8 10 6 1 8 1 10 8 6 5 11 3 9 K 5 11 3 9 3 5 9 11 4 2 7 12 4 2 7 12 7 4 12 2 Matriz Original Proceso de Ordenamiento Matriz Modificada Nota: Observe que ordena la fila K, sin embargo para mantener la relación con las columnas correspondientes es necesario intercambiar las columnas completas. { Ordenamiento de la fila K de la matriz A de M filas y N columnas Manteniendo la relación entre columnas } For i := 1 to N-1 do For j := i + 1 to N do If A[ k, i ] > A[ k, j ] then { Intercambio de la columna i con la columna j } For s := 1 to M do Begin Aux := A[ s, i ]; A[ s, i ] := A[ s, j ]; A[ s, j ] := Aux; End; 3. Ordenar todos los elementos de una matriz de M filas y N columnas. En este caso no puede ordenarse sobre la misma matriz Matriz Original Proceso Matriz Modificada 10 6 1 8 1 2 3 4 3 5 9 11 5 6 7 8 4 2 7 12 9 10 11 12 10 1 6 PASO 2: 2 1 Ordenar vector 3 8 4 PASO 1: 3 5 Copiar matriz 5 6 PASO 3: en vector 9 7 Copiar vector 11 8 en matriz 4 9 2 10 7 11 12 12 Prof. María Beatriz Serrano V. 5/10 Computación II
  • 6. { Ordenamiento de todos los elementos de la matriz A de M filas y N columnas } { Paso 1: Copiar matriz en vector } NV := 0; For i := 1 to M do For j := 1 to N do Begin NV := NV + 1; B[ NV ] := A[ i, j ] End; { Paso 2: Ordenar el vector } For i := 1 to NV-1 do For j := i + 1 to NV do If B[ i ] > B[ j ] then Begin Aux := B[ i ]; B[ i ] := B[ j ]; B[ j ] := Aux; End; { Paso 3: Copiar vector en matriz } NV := 0; For i := 1 to M do For j := 1 to N do Begin NV := NV + 1; A[ i, j ] : = B[ NV ]; End; Prof. María Beatriz Serrano V. 6/10 Computación II
  • 7. Ejercicios de Ordenamiento 1. Dado un arreglo de N elementos, elabore un programa que ordene el arreglo e imprima el arreglo original y el ordenado uno al lado del otro. Desordenado Ordenado 20 10 40 20 90 30 10 40 50 50 80 70 70 80 30 90 2. Se tiene en un archivo de nombre muestra.dat un conjunto de valores desordenados entre sí y se desea un programa Pascal que determine la mediana de dichos valores. La mediana es el valor tal que ocupa la posición central del vector una vez ordenado; en caso de existir dos elementos centrales, la mediana es el promedio de estos. A= 1 2 3 4 6 8 9 N=7 Mediana = 4 A= 1 2 3 4 6 8 9 12 N=8 Mediana = (4+6)/2=5.0 3. Elabore un programa Pascal tal que dados los valores enteros de N observaciones a un experimento, determine e imprima la mediana de aquellos valores que terminan en 15 A= 100 115 200 315 215 130 Mediana = 215 A= 105 215 115 120 127 170 Mediana = 165 4. Se tiene en un archivo de datos la información correspondiente a las coordenadas X y Y de los puntos de un juego de tiro al blanco. Elabore un programa que ordene los valores X manteniendo su relación con los valores Y, imprima los puntos y determine la mediana de los valores de X; ¿podría Ud. determinar en estas condiciones la mediana de Y? 5. Dada la información correspondiente a las edades de un grupo de personas. Elabore un programa Pascal que determine la mayor edad y que ordene las edades a partir de la posición del mayor. Imprima los dos vectores el original y el modificado. Edad 15 17 16 13 12 10 Edad modificado 15 10 12 13 16 17 6. Dado un vector A de N elementos, elabore un programa Pascal que calcule la posición del mayor y el menor valor. Si el menor elemento se encuentra antes del mayor elemento, ordene el vector ascendentemente a partir de la posición del menor hasta la posición del mayor; si el menor elemento se encuentra después del mayor valor, ordene descendentemente a partir de la posición del mayor valor hasta la posición del menor valor. Vector Original A= -1 4 10 2 4 -2 9 Vector Ordenado A= -1 4 10 4 2 -2 9 Prof. Manuel R. Fernández R. 7/10 Computación II
  • 8. 7. El empecinado Sr. Fasti, quiere desarrollar un programa para ordenar ascendentemente el vector V de M elementos, que esta en paralelo con el vector W, de atrás hacia adelante; es decir comenzando de las posiciones finales (M) hacia el principio. Pero este ordenamiento solo debe realizarse para la porción comprendida entre las posiciones K y L del vector [ K < L ] y debe mantener la relación con su vector paralelo. Desarrolle el Diagrama de Flujo de un programa que realice esa tarea. A continuación se presenta un ejemplo: V W V W 2 20 2 20 4 40 4 40 K 9 -90 9 -90 1 -10 8 80 5 50 5 50 L 8 80 1 -10 7 70 7 70 3 30 3 30 ANTES DESPUÉS 8. Una entidad bancaria se encarga de cancelar las pensiones a los jubilados de una empresa. El pago se realiza en función de la centena de la cédula de identidad del pensionado, de la siguiente forma: 1 y 6: Lunes 2 y 7: Martes 3 y 8: Miércoles 4 y 9: Jueves 5 y 0: Viernes Elabore un programa Pascal que dado un grupo de datos con la siguiente información: Nombre, Cédula y Monto de la Pensión imprima un listado por día donde se muestre: Día: XXXXXXXX Número de Pensionados: XXX ----- Nombre ------- -- Cédula - - Monto – XXXXXXXXXXXXXXX XXXXXXXX XXXXXXX : : : XXXXXXXXXXXXXXX XXXXXXXX XXXXXXX ----------- Total: XXXXXXX El listado deberá contener los encabezados adecuados y no más de 40 personas por página ni más de un día de la semana por página. 9. Dada una matriz de orden N, elabore un programa que ordene la fila donde se encuentra el menor elemento, sin importar la relación entre las columnas. 10. Dada una matriz de orden N, elabore un programa que ordene la columna donde se encuentra el mayor elemento, sin importar la relación entre las columnas. 11. Dada una matriz de orden N, elabore un programa que ordene la fila donde se encuentra el menor elemento, manteniendo la relación entre las columnas. 12. Dada una matriz de orden N, elabore un programa que ordene la columna donde se encuentra el mayor elemento, manteniendo la relación entre las columnas. 13. Dada una matriz de orden N, elabore un programa que ordene los elementos ubicados en la diagonal principal 14. Dada una matriz de M filas y N columnas, elabore un programa que ordene los elementos de cada fila a partir de la posición del menor elemento. 15. Dada una matriz de M filas y N columnas, elabore un programa que ordene los elementos de cada columna a partir de la posición del elemento de la diagonal secundaria. Prof. Manuel R. Fernández R. 8/10 Computación II
  • 9. 16. Dada la información de los estudiantes de Computación: Cédula de identidad, nombre, y N (N > 8) quices, elabore un programa con subprogramas que determine el promedio de los 8 mejores quices para cada estudiante. 17. Dada la información de los estudiantes de Computación: Cédula de identidad, nombre, sección y N (N > 8) quices, elabore un programa con subprogramas que ordene la información por sección y dentro de cada sección por nombre 18. Dada la información de los estudiantes de la Facultad: Nombre y Fecha de Nacimiento (dia, mes, año) elabore un programa con subprogramas que ordene por fecha de nacimiento y al final determine quien es el nombre del estudiante con mayor edad. 19. a) Elabore una Función que permita ubicar el elemento menor de un vector A de N componentes a partir de la posición K. b) Elabore un Procedimiento que permita intercambiar dos elementos de un vector. c) Elabore un Procedimiento que permita intercambiar dos filas K y L de una matriz d) Elabore un Programa PASCAL que permita leer los datos de M estudiantes (Cédula y las notas de los tres parciales), las cédulas en un vector y las notas en una matriz. Ordene la información en forma creciente según el promedio de notas de los parciales haciendo uso exclusivamente de los 3 subprogramas anteriores. Imprimir la información ya ordenada. 20. a) Desarrolle un subprograma PASCAL que lea una matriz R de LxK elementos. b) Desarrolle un subprograma PASCAL que imprima una matriz Q de KxL elementos. c) Dada una matriz H de MxN elementos, un vector fila Q de N elementos y un valor K (1 ≤ K ≤ M+1), elabore un subprograma en PASCAL que modifique la matriz de la siguiente forma: Si 1 ≤ K ≤ M, inserte el vector en la fila K Si K=M+1, anexe el vector colocándolo como última fila de la matriz d) Dada una matriz A de orden PxQ y tres valores enteros K, L y M, elabore un subprograma PASCAL que ordene la fila K a partir de la columna L hasta la columna M de la matriz. e) Dada una matriz Z de orden K, elabore un subprograma PASCAL que usando el subprograma anterior, ordene cada fila a partir del elemento ubicado en la diagonal secundaria.  0 −1 2 − 6  0 −1 2 − 6      8 1 − 3 − 1  8 1 − 1 − 3 Z = ⇒Z =  10 8 3 4  10 3 4 8      0 3 −4 1 − 4 0 1 3 f) Dada una matriz C de orden K, elabore una función en PASCAL que calcule la suma de los elementos de la triangular inferior. g) Dada una matriz C de orden K, elabore una función en PASCAL que calcule la suma de los elementos de la triangular superior. h) Dada una matriz AB de orden M, elabore un programa PASCAL que lea la matriz y si la suma de los elementos de la triangular inferior son iguales a la suma de los elementos de la triangular superior, ordene las filas de la matriz a partir de los elementos de la diagonal secundaria, sino, inserte un vector de elementos nulos en la primera fila de la matriz. Prof. Manuel R. Fernández R. 9/10 Computación II
  • 10. 21. a) Desarrolle un subprograma PASCAL tipo función que dada una matriz A de MxN y un valor escalar K, determine el menor valor de la fila K.  11 5 9    A = 13 20 15  Para K = 2, el menor valor es 13 1 8 7   b) Desarrolle un subprograma que dada una matriz A de LxP, genere un vector Z donde cada elemento sea igual a la suma de los elementos de cada fila mayores al valor mínimo. Debe usar el subprograma anterior.  11 5 9   20      A = 13 20 15  Z =  35  1 8 7  15      c) Desarrolle un subprograma tipo procedimiento que dada una matriz A de LxP elementos y un vector Z de L componentes, ordene el vector en forma descendente, manteniendo la relación con las componentes de las filas de la matriz.  11 5 9   20  13 20 15   35          A = 13 20 15  Z =  35  ⇒ A =  11 5 9  Z =  20  1 8 7  15  1 8 7  15          d) Desarrolle un programa Pascal que haciendo uso de los subprogramas anteriores y los que Ud. considere necesarios, haga lo siguiente: i) Lea el contenido de una matriz C de NxM, donde N representa el número de vendedores den una empresa y M la cantidad de diferentes artículos que vende la tienda; el contenido [I,J] de la matriz corresponderá a la cantidad vendida del artículo J por el vendedor I. M y N son conocidos y son valores de entrada. ii) Calcule el promedio de ventas de cada vendedor, el cual será igual a: Suma de Ventas - Venta Menor M -1 iii) Ordene el vector en forma descendente, manteniendo la relación con las componentes de las filas. iv) Imprimir la matriz y el vector promedio uno al lado del otro. Prof. Manuel R. Fernández R. 10/10 Computación II