SlideShare a Scribd company logo
1 of 7
Download to read offline
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS – LÓGICA DE PROGRAMACIÓN
MÉTODOS DE ORDENACIÓN
Se dividen en dos categorías:
Ordenación INTERNA de vectores y matrices (tablas): se denomina ordenación interna, ya que se
almacena en la memoria interna de la computadora de gran velocidad y acceso aleatorio.
Ordenación EXTERNA de archivos: La ordenación de archivos se suele hacer con casi siempre
sobre soportes de almacenamiento externo, discos, cinta, etc. y por ello se denomina también
ordenación externa. Estos dispositivos son más lentos en las operaciones de entrada/salida, pero,
por el contrario, pueden contener mayor cantidad de información
ORDENACIÓN DE VECTORES O ARREGLOS:
Los métodos más conocidos son:
1. Ordenación por Intercambio o de burbuja.
2. Ordenación por Inserción directa.
3. Ordenación por Inserción Binaria.
4. Ordenación por Selección Directa.
5. Ordenación por el método de Shell
6. Ordenación por el método Quicksort (ordenamiento rápido)
La organización de los datos en un vector puede ser en orden ascendente (los valores van de
menor a mayor) o descendente (los valores van de mayor a menor)
1. Burbuja. El algoritmo ordena los elementos del arreglo utilizando el método de la
burbuja, esto es, transporta en cada pasada el elemento mayor hacia la parte
derecha del arreglo.
Ejemplo: Se tiene un vector de 100 elementos, organizarlo de forma ascendente.
Lista de variables
VEC = nombre del arreglo
N = Registro identificador
i, J= subíndices del vector
AUX = variable auxiliar para ordenar el vector
INICIO BURBUJA
Inicio
Const Int N = 100;
Int VEC[N], num;
Int i;
Llamar Llenar_VEC (VEC [N], i);
Llamar a Ordenar (VEC [N], i);
Fin
// Sólo haremos el subprograma Ordenar:
Ordenar (Int VEC [N]; Int i)
Inicio
Int j, aux;
Para ( i = 1, (n-1))
j = i + 1
Para (J = ( i + 1); N)
Si (VEC[ i ] > VEC[ j ]) Ent
//Intercambio:
aux = VEC [i];
VEC [i] = VEC[j];
VEC[j] = aux;
Fin-si
Fin-Para
Fin-Para
Fin
2. Ordenamiento Por Inserción directa: En este método una vez que se determina la
posición correcta del elemento, se interrumpen las comparaciones.
Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros.
Lista de variables
VEC = nombre del arreglo
N = Registro identificador
k, m= subíndices del vector
AUX = variable auxiliar para ordenar el vector
INSERCION_DIRECTA ()
Inicio
Const Int N = 100;
Int VEC[N], num;
Int k;
Llamar Llenar_VEC (VEC [N], k);
Llamar a Ordenar (VEC [N], k);
Fin
// Sólo haremos el subprograma Ordenar:
Ordenar (Int VEC [N]; Int k)
Inicio
Int m, aux;
PARA (k = 2, N)
aux = VEC[m]
k = m - 1
MQ ( (k >=1) && (aux < VEC[k]) ) HAGA
VEC [k+1] = VEC[k]
k = k - 1
Fin-MQ
VEC [k+1] = aux;
Fin-Para
FIN Ordenar
3. Ordenamiento Por Inserción Binaria: El método de ordenación por inserción
directa puede mejorarse fácilmente. Para ello se recurre a una búsqueda binaria
en lugar de una búsqueda secuencial para insertar un elemento en la parte
izquierda del arreglo, que ya se encuentra ordenado. El proceso, al igual que en
método de inserción directa, se repite desde el segundo hasta el n-ésimo
elemento.
Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros
Lista de variables
VEC = nombre del arreglo
N = Registro identificador
x, y= subíndices del vector
AUX = variable auxiliar para ordenar el vector
IZQ = izquierda del vector
DER = derecha del vector
M = variable para almacenar la mitad
INSERCION_BINARIA ()
Inicio
Const Int N = 100;
Int VEC[N], num;
Int x;
Llamar Llenar_VEC (VEC [N], x);
Llamar a Ordenar (VEC [N], x);
Fin
// Sólo haremos el subprograma Ordenar:
Ordenar (Int VEC [N]; Int x)
Inicio
Int AUX , IZQ, DER , M, y;
Para (y = 2, N)
AUX = VEC [y];
IZQ = 1
DER = y - 1
MQ (IZQ <= DER)
M = ((IZQ + DER)/2)
SI (AUX < = VEC [M]) Ent
DER = M - 1
SINO
IZQ = M + 1
FIN-SI
Fin-MQ
x = y - 1
MQ (x >= IZQ) HAGA
VEC [x + 1] = VEC [x]
x = x - 1
Fin-MQ
VEC [IZQ] = AUX
Fin-PARA
Fin-Ordenar
NOTA: en el método de ordenación por inserción binaria se efectúa el menor número de
comparaciones cuando el arreglo está totalmente desordenado y el máximo cuando está
ordenado.
4. Ordenamiento Por Selección Directa: El método de ordenación por selección
directa es más eficiente que los métodos analizados anteriormente, pero sólo para
vectores pequeños.
La idea básica de este algoritmo consiste en buscar el menor elemento del arreglo y colocarlo en la
primera posición. Luego se busca el segundo elemento más pequeño del arreglo y se lo coloca en
la segunda posición.
El método se basa en los siguientes principios:
Seleccionar el menor elemento del arreglo
Intercambiar dicho elemento con el primero
Repetir los pasos anteriores con los (n-1), (n-2) elementos y así sucesivamente hasta
que sólo quede el elemento mayor.
Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros
Lista de variables
VEC = nombre del arreglo
N = Registro identificador
j, p= subíndices del vector
MENOR = variable auxiliar para ordenar el vector
K = izquierda del vector
ORDENASELECCIONDIRECTA ()
Inicio
Const Int N = 100;
Int VEC[N], num;
Int j;
Llamar Llenar_VEC (VEC [N], j);
Llamar a Ordenar (VEC [N], j);
Fin
// Sólo haremos el subprograma Ordenar:
Ordenar (Int VEC [N]; Int j)
Inicio
Int j, MENOR, K, P;
PARA (P = 1, N -1)
MENOR = VEC [P]
K = P
PARA (j = P + 1, N)
SI VEC [j] < MENOR) Ent
MENOR = VEC [j]
K = j
Fin-si
Fin-Para
VEC [K] = VEC [P]
VEC [P] = MENOR
Fin-para
Fin
5. Ordenamiento Por El Método De Shell. Es una mejora del método de inserción
directa que se utiliza cuando el número de elementos a ordenar es grande. El
método se denomina “Shell” -en honor a su inventor Donal Shell- y también
método de inserción sin incrementos decrecientes.
Shell modificó los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y
con eso se conseguía la clasificación más rápida. El método se basa en fijar el tamaño de los saltos
constantes, pero de más de una posición.
Supongamos un vector A de seis (6) elementos.
4 12 16 24 36 3
En el método de inserción, los saltos se hacen de una posición y se necesitarán 5 comparaciones.
En el método de Shell, si los saltos son de dos posiciones, se realiza tres comparaciones.
El método se basa en tomar como salto N/2 (siendo N el número de elementos) y luego se va
reduciendo a la mitad en cada repetición hasta que el salto o distancia vale 1
Para un vector A de N elementos, el primer salto a dar tendrá un valor de N/2, por lo que, para
redondear, se tomará la parte entera de N div 2
Y se iguala a SALTO
Salto = N div 2
El seudocódigo del procedimiento de ordenamiento por el método Shell es el siguiente:
Ejemplo Ordenar los elementos del arreglo utilizando el método de Shell. VEC es un arreglo de 100
elementos
Lista de variables
VEC = nombre del arreglo
N = Registro identificador
J,K,F = subíndices del vector
SALTO = variable auxiliar para ordenar el vector
ORDENAMIENTO_SHELL ()
Inicio
Const Int N = 100;
Int VEC[N], num;
Int j;
Llamar Llenar_VEC (VEC [N], j);
Llamar a Ordenar (VEC [N], j);
Fin
// Sólo haremos el subprograma Ordenar:
Ordenar (Int VEC [N]; Int j)
Inicio
Int SALTO, K, F;
SALTO = N div 2
MQ (SALTO > 0) HAGA
PARA (F = (SALTO + 1), N)
J = F - SALTO
Mq (J > 0)
K = J + SALTO
SI (VEC [J] <= VEC [K]) Ent
J = 0
SINO
AUX = VEC [j]
VEC [j] = VEC [k]
VEC [k] = AUX
Fin-si
J = J - SALTO
Fin-MQ
Fin-Para
SALTO = SALTO div 2
Fin-MQ
Fin Ordenar
TALLER DE ORDENAMIENTO:
1. Almacenar 50 números en un vector, ordenarlos en forma ascendente y mostrar si
existe o no un número leído desde teclado.
2. Almacenar en vectores paralelos de 50 posiciones, los nombres y cédulas de los
estudiantes de un grupo. Permitir realizar consultas por el número de cédula y
mostrar los vectores ordenados en forma descendente.
3. Almacenar en vectores paralelos el código y precio de N artículos, máximo 100.
Permitir consultas por código y por precio. Mostrarlos ordenados en forma
ascendente por el campo código.
4. Almacenar en vectores paralelos de 100 posiciones los datos de N estudiantes:
código y promedio académico. Permitir consultar por código del estudiante.
Mostrar los vectores ordenados por el campo código y/o promedio de acuerdo a la
elección del usuario.
5. Almacenar en vectores paralelos (igual tamaño) la edad y el sexo de 100 personas.
Imprimir el promedio de edad de los hombres y promedio de edad de las mujeres.
Mostrar el contenido de ambos vectores en forma ordenada por el campo edad.

More Related Content

What's hot

Estructura de Datos : Ordenamiento Externo
Estructura de Datos : Ordenamiento Externo Estructura de Datos : Ordenamiento Externo
Estructura de Datos : Ordenamiento Externo Carlos Criollo
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamientoOrlando Torres
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Different Sorting tecniques in Data Structure
Different Sorting tecniques in Data StructureDifferent Sorting tecniques in Data Structure
Different Sorting tecniques in Data StructureTushar Gonawala
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortlinkinpark03
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexadoAleizapata
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctness
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program CorrectnessCMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctness
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctnessallyn joy calcaben
 
Metodos de ordenamiento 2
Metodos de ordenamiento 2Metodos de ordenamiento 2
Metodos de ordenamiento 2angela montilla
 

What's hot (20)

Estructura de Datos : Ordenamiento Externo
Estructura de Datos : Ordenamiento Externo Estructura de Datos : Ordenamiento Externo
Estructura de Datos : Ordenamiento Externo
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
5.2.1 Intercalación.pptx
5.2.1 Intercalación.pptx5.2.1 Intercalación.pptx
5.2.1 Intercalación.pptx
 
Different Sorting tecniques in Data Structure
Different Sorting tecniques in Data StructureDifferent Sorting tecniques in Data Structure
Different Sorting tecniques in Data Structure
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Ordenacion Burbuja
Ordenacion BurbujaOrdenacion Burbuja
Ordenacion Burbuja
 
Quicksort
QuicksortQuicksort
Quicksort
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexado
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Archivo Secuencial
Archivo SecuencialArchivo Secuencial
Archivo Secuencial
 
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctness
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program CorrectnessCMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctness
CMSC 56 | Lecture 12: Recursive Definition & Algorithms, and Program Correctness
 
Metodos de ordenamiento 2
Metodos de ordenamiento 2Metodos de ordenamiento 2
Metodos de ordenamiento 2
 

Viewers also liked

Taller logica ciclo mq centinela 2013
Taller logica ciclo mq  centinela 2013Taller logica ciclo mq  centinela 2013
Taller logica ciclo mq centinela 2013memorales_IUE
 
Taller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multipleTaller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multiplememorales_IUE
 
Taller condicionales marzo22
Taller condicionales marzo22Taller condicionales marzo22
Taller condicionales marzo22memorales_IUE
 
Logica condicionales
Logica condicionalesLogica condicionales
Logica condicionalesmemorales_IUE
 

Viewers also liked (7)

Taller logica ciclo mq centinela 2013
Taller logica ciclo mq  centinela 2013Taller logica ciclo mq  centinela 2013
Taller logica ciclo mq centinela 2013
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos busquedas
Arreglos busquedasArreglos busquedas
Arreglos busquedas
 
Taller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multipleTaller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multiple
 
Taller condicionales marzo22
Taller condicionales marzo22Taller condicionales marzo22
Taller condicionales marzo22
 
Logica condicionales
Logica condicionalesLogica condicionales
Logica condicionales
 
Ciclos
CiclosCiclos
Ciclos
 

Similar to Metodos de ordenamiento

Similar to Metodos de ordenamiento (20)

metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
metodosdeordenamiento.pptx
metodosdeordenamiento.pptxmetodosdeordenamiento.pptx
metodosdeordenamiento.pptx
 
Algoritmos De Ordenacion
Algoritmos De OrdenacionAlgoritmos De Ordenacion
Algoritmos De Ordenacion
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 
Métodos de ordenamiento
Métodos de ordenamientoMétodos de ordenamiento
Métodos de ordenamiento
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Vectores
VectoresVectores
Vectores
 
Método de insercion
Método de insercionMétodo de insercion
Método de insercion
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Ordenamiento
OrdenamientoOrdenamiento
Ordenamiento
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Algoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaAlgoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busqueda
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
Expshell
ExpshellExpshell
Expshell
 
Expshell
ExpshellExpshell
Expshell
 

More from memorales_IUE

Logica tipos de datos operadores
Logica tipos de datos operadoresLogica tipos de datos operadores
Logica tipos de datos operadoresmemorales_IUE
 
Logica terminosbasicos presentacion
Logica terminosbasicos presentacionLogica terminosbasicos presentacion
Logica terminosbasicos presentacionmemorales_IUE
 
Logica consulta terminos basicos
Logica consulta terminos basicosLogica consulta terminos basicos
Logica consulta terminos basicosmemorales_IUE
 

More from memorales_IUE (6)

Logica subprogramas
Logica subprogramasLogica subprogramas
Logica subprogramas
 
Logica tipos de datos operadores
Logica tipos de datos operadoresLogica tipos de datos operadores
Logica tipos de datos operadores
 
Logica terminosbasicos presentacion
Logica terminosbasicos presentacionLogica terminosbasicos presentacion
Logica terminosbasicos presentacion
 
Logica consulta terminos basicos
Logica consulta terminos basicosLogica consulta terminos basicos
Logica consulta terminos basicos
 
Tipos de algoritmos
Tipos de algoritmosTipos de algoritmos
Tipos de algoritmos
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 

Metodos de ordenamiento

  • 1. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS – LÓGICA DE PROGRAMACIÓN MÉTODOS DE ORDENACIÓN Se dividen en dos categorías: Ordenación INTERNA de vectores y matrices (tablas): se denomina ordenación interna, ya que se almacena en la memoria interna de la computadora de gran velocidad y acceso aleatorio. Ordenación EXTERNA de archivos: La ordenación de archivos se suele hacer con casi siempre sobre soportes de almacenamiento externo, discos, cinta, etc. y por ello se denomina también ordenación externa. Estos dispositivos son más lentos en las operaciones de entrada/salida, pero, por el contrario, pueden contener mayor cantidad de información ORDENACIÓN DE VECTORES O ARREGLOS: Los métodos más conocidos son: 1. Ordenación por Intercambio o de burbuja. 2. Ordenación por Inserción directa. 3. Ordenación por Inserción Binaria. 4. Ordenación por Selección Directa. 5. Ordenación por el método de Shell 6. Ordenación por el método Quicksort (ordenamiento rápido) La organización de los datos en un vector puede ser en orden ascendente (los valores van de menor a mayor) o descendente (los valores van de mayor a menor) 1. Burbuja. El algoritmo ordena los elementos del arreglo utilizando el método de la burbuja, esto es, transporta en cada pasada el elemento mayor hacia la parte derecha del arreglo. Ejemplo: Se tiene un vector de 100 elementos, organizarlo de forma ascendente. Lista de variables VEC = nombre del arreglo N = Registro identificador i, J= subíndices del vector AUX = variable auxiliar para ordenar el vector INICIO BURBUJA Inicio Const Int N = 100; Int VEC[N], num; Int i;
  • 2. Llamar Llenar_VEC (VEC [N], i); Llamar a Ordenar (VEC [N], i); Fin // Sólo haremos el subprograma Ordenar: Ordenar (Int VEC [N]; Int i) Inicio Int j, aux; Para ( i = 1, (n-1)) j = i + 1 Para (J = ( i + 1); N) Si (VEC[ i ] > VEC[ j ]) Ent //Intercambio: aux = VEC [i]; VEC [i] = VEC[j]; VEC[j] = aux; Fin-si Fin-Para Fin-Para Fin 2. Ordenamiento Por Inserción directa: En este método una vez que se determina la posición correcta del elemento, se interrumpen las comparaciones. Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros. Lista de variables VEC = nombre del arreglo N = Registro identificador k, m= subíndices del vector AUX = variable auxiliar para ordenar el vector INSERCION_DIRECTA () Inicio Const Int N = 100; Int VEC[N], num; Int k; Llamar Llenar_VEC (VEC [N], k); Llamar a Ordenar (VEC [N], k); Fin // Sólo haremos el subprograma Ordenar: Ordenar (Int VEC [N]; Int k) Inicio Int m, aux; PARA (k = 2, N) aux = VEC[m]
  • 3. k = m - 1 MQ ( (k >=1) && (aux < VEC[k]) ) HAGA VEC [k+1] = VEC[k] k = k - 1 Fin-MQ VEC [k+1] = aux; Fin-Para FIN Ordenar 3. Ordenamiento Por Inserción Binaria: El método de ordenación por inserción directa puede mejorarse fácilmente. Para ello se recurre a una búsqueda binaria en lugar de una búsqueda secuencial para insertar un elemento en la parte izquierda del arreglo, que ya se encuentra ordenado. El proceso, al igual que en método de inserción directa, se repite desde el segundo hasta el n-ésimo elemento. Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros Lista de variables VEC = nombre del arreglo N = Registro identificador x, y= subíndices del vector AUX = variable auxiliar para ordenar el vector IZQ = izquierda del vector DER = derecha del vector M = variable para almacenar la mitad INSERCION_BINARIA () Inicio Const Int N = 100; Int VEC[N], num; Int x; Llamar Llenar_VEC (VEC [N], x); Llamar a Ordenar (VEC [N], x); Fin // Sólo haremos el subprograma Ordenar: Ordenar (Int VEC [N]; Int x) Inicio Int AUX , IZQ, DER , M, y; Para (y = 2, N) AUX = VEC [y]; IZQ = 1 DER = y - 1 MQ (IZQ <= DER) M = ((IZQ + DER)/2)
  • 4. SI (AUX < = VEC [M]) Ent DER = M - 1 SINO IZQ = M + 1 FIN-SI Fin-MQ x = y - 1 MQ (x >= IZQ) HAGA VEC [x + 1] = VEC [x] x = x - 1 Fin-MQ VEC [IZQ] = AUX Fin-PARA Fin-Ordenar NOTA: en el método de ordenación por inserción binaria se efectúa el menor número de comparaciones cuando el arreglo está totalmente desordenado y el máximo cuando está ordenado. 4. Ordenamiento Por Selección Directa: El método de ordenación por selección directa es más eficiente que los métodos analizados anteriormente, pero sólo para vectores pequeños. La idea básica de este algoritmo consiste en buscar el menor elemento del arreglo y colocarlo en la primera posición. Luego se busca el segundo elemento más pequeño del arreglo y se lo coloca en la segunda posición. El método se basa en los siguientes principios: Seleccionar el menor elemento del arreglo Intercambiar dicho elemento con el primero Repetir los pasos anteriores con los (n-1), (n-2) elementos y así sucesivamente hasta que sólo quede el elemento mayor. Ejemplo Ordenar un vector de 100 posiciones con elementos numéricos enteros Lista de variables VEC = nombre del arreglo N = Registro identificador j, p= subíndices del vector MENOR = variable auxiliar para ordenar el vector K = izquierda del vector ORDENASELECCIONDIRECTA () Inicio
  • 5. Const Int N = 100; Int VEC[N], num; Int j; Llamar Llenar_VEC (VEC [N], j); Llamar a Ordenar (VEC [N], j); Fin // Sólo haremos el subprograma Ordenar: Ordenar (Int VEC [N]; Int j) Inicio Int j, MENOR, K, P; PARA (P = 1, N -1) MENOR = VEC [P] K = P PARA (j = P + 1, N) SI VEC [j] < MENOR) Ent MENOR = VEC [j] K = j Fin-si Fin-Para VEC [K] = VEC [P] VEC [P] = MENOR Fin-para Fin 5. Ordenamiento Por El Método De Shell. Es una mejora del método de inserción directa que se utiliza cuando el número de elementos a ordenar es grande. El método se denomina “Shell” -en honor a su inventor Donal Shell- y también método de inserción sin incrementos decrecientes. Shell modificó los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y con eso se conseguía la clasificación más rápida. El método se basa en fijar el tamaño de los saltos constantes, pero de más de una posición. Supongamos un vector A de seis (6) elementos. 4 12 16 24 36 3 En el método de inserción, los saltos se hacen de una posición y se necesitarán 5 comparaciones. En el método de Shell, si los saltos son de dos posiciones, se realiza tres comparaciones. El método se basa en tomar como salto N/2 (siendo N el número de elementos) y luego se va reduciendo a la mitad en cada repetición hasta que el salto o distancia vale 1
  • 6. Para un vector A de N elementos, el primer salto a dar tendrá un valor de N/2, por lo que, para redondear, se tomará la parte entera de N div 2 Y se iguala a SALTO Salto = N div 2 El seudocódigo del procedimiento de ordenamiento por el método Shell es el siguiente: Ejemplo Ordenar los elementos del arreglo utilizando el método de Shell. VEC es un arreglo de 100 elementos Lista de variables VEC = nombre del arreglo N = Registro identificador J,K,F = subíndices del vector SALTO = variable auxiliar para ordenar el vector ORDENAMIENTO_SHELL () Inicio Const Int N = 100; Int VEC[N], num; Int j; Llamar Llenar_VEC (VEC [N], j); Llamar a Ordenar (VEC [N], j); Fin // Sólo haremos el subprograma Ordenar: Ordenar (Int VEC [N]; Int j) Inicio Int SALTO, K, F; SALTO = N div 2 MQ (SALTO > 0) HAGA PARA (F = (SALTO + 1), N) J = F - SALTO Mq (J > 0) K = J + SALTO SI (VEC [J] <= VEC [K]) Ent J = 0 SINO AUX = VEC [j] VEC [j] = VEC [k] VEC [k] = AUX Fin-si J = J - SALTO Fin-MQ
  • 7. Fin-Para SALTO = SALTO div 2 Fin-MQ Fin Ordenar TALLER DE ORDENAMIENTO: 1. Almacenar 50 números en un vector, ordenarlos en forma ascendente y mostrar si existe o no un número leído desde teclado. 2. Almacenar en vectores paralelos de 50 posiciones, los nombres y cédulas de los estudiantes de un grupo. Permitir realizar consultas por el número de cédula y mostrar los vectores ordenados en forma descendente. 3. Almacenar en vectores paralelos el código y precio de N artículos, máximo 100. Permitir consultas por código y por precio. Mostrarlos ordenados en forma ascendente por el campo código. 4. Almacenar en vectores paralelos de 100 posiciones los datos de N estudiantes: código y promedio académico. Permitir consultar por código del estudiante. Mostrar los vectores ordenados por el campo código y/o promedio de acuerdo a la elección del usuario. 5. Almacenar en vectores paralelos (igual tamaño) la edad y el sexo de 100 personas. Imprimir el promedio de edad de los hombres y promedio de edad de las mujeres. Mostrar el contenido de ambos vectores en forma ordenada por el campo edad.