Вы находитесь на странице: 1из 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

ORDENAMIENTO DE ARREGLOS

Resumen: El proceso de ordenamiento es fundamental en la organizacin de los datos. La razn es que, al estar ordenados, es posible efectuar una bsqueda posterior de algn dato dentro del conjunto por medio de mtodos ms eficientes. Se realiza una descripcin de los mtodos directos de ordenamiento: seleccin, insercin y burbujeo. Tambin se efecta una breve mencin al rendimiento de estos algoritmos. Objetivos: Resaltar la importancia del proceso de ordenamiento dentro del ciclo de vida de los datos. Realizar un estudio de los mtodos de ordenamiento, basndose en aproximaciones sucesivas desde aquellos ms bsicos e intuitivos hasta aquellos de mejor rendimiento. Mencionar la existencia de mtodos ms eficientes, llamados indirectos.

El acto de ordenar, es una actividad fundamental en la vida diaria de toda sociedad moderna. De hecho, inconscientemente, y desde pequeos, somos instruidos a mantener el orden de nuestras pertenencias. Aqu y all clasificamos cuanto objeto tengamos a nuestro alcance. En el supermercado, en la biblioteca, todos los artculos se encuentran agrupados y ordenados de acuerdo a algn criterio. Otro ejemplo clsico es el de las voluminosas guas telefnicas, las enciclopedias, etc. Como todos sabemos, mantener un determinado orden, en general no es una tarea sencilla, y puede que nos replanteemos si realmente vale la pena seguir adelante de esta manera. Debemos encontrar razones muy valederas que nos permitan justificar semejante esfuerzo. Bsicamente, la razn principal por la cual se ordena es para despus poder buscar eficientemente. Afortunadamente y, aunque parezca un hecho trivial, sabemos que el nmero 10 viene luego del 9, y ste luego del 8, y que a ste le precede el 1. Gracias a esta relacin lgico-matemtica, el orden, somos capaces de ahorrarnos muchsimo trabajo a la hora de hurgar entre montaas de datos. Anteriormente mencionamos a las pesadas guas telefnicas. Estas poseen registros de varios millones de personas con sus respectivos nmeros telefnicos. La cantidad de datos contenidos es abrumadora, sin embargo, cuando queremos saber el telfono de una persona en especial, resultara ridculo buscar uno por uno desde el principio hasta encontrarlo. Sabiendo que la A es anterior a la C, y que sta a su vez es previa a la N, y as al conocer el orden establecido entre las letras del abecedario, llegamos ms fcilmente al dato requerido. Inconscientemente empleamos un mtodo, un algoritmo, que se aprovecha de la relacin ya mencionada. Simplemente abrimos la gua en un punto al azar. Si la abrimos en una letra anterior a la del apellido que buscamos, abriremos de nuevo un poco ms adelante, hasta encontrar que nos hemos pasado. En ese punto volveremos hacia atrs, desplazando cada vez menor cantidad de hojas, hasta que arribamos a nuestro destino. Este secuencia de acciones, permite ahorrarnos una suma nada despreciable, mas bien, enorme, de pasos intermedios. Como el lector puede ya intuir, ste es el principio de la Bsqueda Binaria. De la misma forma que nosotros nos ahorramos gran cantidad de operaciones, lo mismo sucede con las computadoras, y volvemos a repetirlo, este nmero de operaciones no se debe subestimar, ya que es inmenso. Es un error realizar una bsqueda binaria en un conjunto de datos si stos no se encuentran ordenados
Edicin Preliminar (bajo revisin) Pgina 1 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

Claro que para que nosotros o algn equipo informtico pueda realizar dicha bsqueda, primeramente se debe realizar el ordenamiento. Sin duda, una de las operaciones principales y que ejecutan con mayor eficiencia las computadoras son los ordenamientos. Qu operacin puede resultar ms simple tratndose slo de comparaciones matemticas? No en vano, los espaoles han acuado el trmino ordenador para referirse a ellas. Cantidades descomunales de datos son clasificadas y ordenadas a cada segundo por gran cantidad de equipos informticos. Todo en pos de un solo objetivo: facilitar una bsqueda posterior. Obviamente un microprocesador puede ordenar un juego de datos mucho ms rpido que una persona, pero aqu surge una pregunta clave: cun rpido puede ordenarse este juego de datos?. Quiz nos convenga reformulan la pregunta: de qu depende la rapidez con la que puede ordenar una computadora? Podemos responder que, en principio juega un papel preponderante la velocidad global del equipo, aunque, debemos destacar que una parte mucho mayor de la eficiencia radica en la forma en que llevamos adelante el proceso, es decir, la manera en que ordenamos. Por ende, un aspecto fundamental para ordenar rpido es la forma cmo ordenamos. Claro que, antes de ordenar rpido, debemos saber cmo ordenar. se es el propsito fundamental de este apunte: Cmo se ordena?. Para conseguir lo que nos proponemos, describiremos un mtodo, una serie de pasos a seguir, un algoritmo. Es as que desarrollaremos y explicaremos algoritmos de ordenamiento. El estudio de diferentes mtodos para ordenar datos es un rea floreciente dentro de la informtica y las matemticas, y como dice Niklaus Wirth, la clasificacin es un tema ideal para demostrar la gran diversidad de algoritmos; todos tienen el mismo propsito, aunque son todos diferentes, por la sencilla razn que existen infinidad de formas de ordenar. Cuando desarrollamos un algoritmo, es til comenzar siempre desde lo ms bsico e intuitivo, avanzando as hacia los ms complejos realizando un aprendizaje escalonado. Una vez que hemos llegado hasta aqu, el marco de nuestro problema est fijado, sabemos que nuestro problema es cmo ordenar. Ahora fijemos los detalles necesarios para llevar adelante la descripcin de los diferentes algoritmos. Por una razn de simplicidad, propondremos ordenar un arreglo de una dimensin, un vector de 7 componentes, cargado con valores aleatorios.

Entrada: VECTOR DESORDENADO

vec[1] 23

54

17

12

vec[7] 32

PROCESO DE ORDENAMIENTO

Salida: VECTOR ORDENADO

vec[1] 2

12

17

23

32

vec[7] 54

En la prctica, en lugar de ordenar slo datos simples, tendremos un vector compuesto por registros que contendrn diversos datos. El campo del registro por el cual ordenaremos se llama la clave de ordenamiento. Veamos ahora cmo podemos llevar adelante el proceso de ordenamiento.

Edicin Preliminar (bajo revisin)

Pgina 2 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

ORDENAMIENTO POR S ELECCIN Dado que ordenar es una actividad cotidiana, a diario utilizamos inconscientemente algoritmos de ordenamiento. El ms intuitivo y utilizado a menudo consta de los siguientes pasos: 1. Encontrar el componente ms pequeo del arreglo. En este caso es vec[5] que contiene al valor 2.

Secuencia 1 Valor mnimo: vec [5] : 2 Intercambio: Vec [1] vec[1] 23 Vec [5] 54 5 17 vec[5] 2 12 vec[7] 32

2. Intercambiarlo con la primera posicin. Al hacer esto, vemos que nos van quedando dos subgrupos. Uno a la izquierda, en el cual las componentes van quedando ordenadas (sombreado en gris), y el resto de los componentes del arreglo a la derecha y desordenados. Ahora volvemos a buscar el componente ms pequeo en el subgrupo derecho que nos ha quedado. Esta vez resulta ser el valor contenido en vec[3] que es 5. Nuevamente lo intercambiamos, ahora con vec[2]. (Recordar que vec[1] ya se encuentra en el subgrupo de valores ordenados).

Secuencia 2 Valor mnimo: vec [3] : 5 Intercambio: Vec [2] vec[1] vec[2] vec[3] 54 5 2 Vec [3] 17 23 12 vec[7] 32

Nuevamente volvemos a buscar el mnimo en el subgrupo de la derecha (vec[3] .. vec[7]). Es el 12 y se encuentra en la posicin sexta del arreglo. Lo intercambiamos con el valor que se encuentra en la posicin tercera.

Secuencia 3 Valor mnimo: vec [6] : 12 Intercambio: Vec [3] vec[1] 2 Vec [6] 5 vec[3] 54 17 23 vec[6] vec[7] 12 32

As, vamos repitiendo las mismas operaciones, hasta que nuestro vector queda ordenado, como se muestra en los siguientes pasos.

Edicin Preliminar (bajo revisin)

Pgina 3 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

Secuencia 4 Valor mnimo: vec [4] : 17 Intercambio: Vec [4] vec[1] 2 Vec [4] 5 12 vec[4] 17 23 54 vec[7] 32

Ntese que en la Secuencia 4 y 5, el intercambio se produce sobre s mismo, al encontrarse la componente ya ordenada.

Secuencia 5 Valor mnimo: vec [5] : 23 Intercambio: Vec [5] vec[1] 2 Vec [5] 5 12 17 vec[5] 23 54 vec[7] 32

Secuencia 6 Valor mnimo: vec [7] : 32 Intercambio: Vec [6] vec[1] 2 Vec [7] 5 12 17 23 vec[6] vec[7] 54 32

Finalmente hemos logrado ordenar los elementos del vector original. Intentemos ahora plasmar nuestro mtodo en un algoritmo. Vector Ordenado vec[1] 2 vec[7] 54

12

17

23

32

A travs del desarrollo que hemos hecho, resulta claro que el proceso consiste en un par de operaciones que se van reiterando cclicamente sobre el conjunto de datos, es decir estamos en presencia de una estructura iterativa. Como ya hemos aprendido en nuestro curso, poseemos dos clases de estructuras repetitivas, las exactas (for) y las indefinidas (while do, repeat until). Podemos afirmar que la cantidad de pasos para ordenar un arreglo utilizando este mtodo es invariante, hemos utilizado 6 pasos o secuencias para ordenar un arreglo de 7 posiciones. Si el arreglo hubiera tenido 20 posiciones, hubiera bastado con 19 pasos. Entonces, la variable que controlar nuestro ciclo ir desde 1 hasta Tope-1, siendo Tope el subndice mximo del vector.

Si bien podramos realizar los n pasos, observe que el paso n sera innecesario, ya que en todos los casos intercambiara la ltima posicin consigo misma.

Edicin Preliminar (bajo revisin)

Pgina 4 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

Ahora queda por definir cules son aquellas operaciones que hemos realizado cclicamente, para obtener el ordenamiento. stas las enumeramos al principio y son: a. Bsqueda del mnimo en el subgrupo derecho. b. Intercambio del mnimo con la primera componente del subgrupo derecho

OrdenaSeleccion vec: tipoVector tope: integer

Bsqueda del menor componente dentro del subgrupo derecho

BusquedaMinimo

i 1
tope-1

vec:tipoVector,

i:integer, minimo:integer,

posMinimo:integer

auxiliar := vec [ i] vec [i] := vector [posMinimo] vec [ posMinimo] := auxiliar

Intercambio de los valores ubicados en la posicin actual del vector y en la posicin mnima del subgrupo derecho

Return

M TODO DE INTERCALACIN Este algoritmo es el que utilizamos normalmente cuando jugamos con naipes. El mtodo se basa en dividir el arreglo en dos subconjuntos, el izquierdo o destino y el derecho o fuente. La tcnica consiste en considerar al subconjunto destino como ordenado e ir tomando valores del subconjunto fuente e intercalarlos en la posicin correcta, tal y como lo hacen los jugadores de cartas. Veamos un ejemplo, de manera de quedar la explicacin ms clara: En el paso 1, asumimos la mitad destino compuesta por vec [1] (regin grisada) y todo el resto como la seccin fuente. Como dijimos, comenzaremos tomando el primer valor de la regin fuente, o sea vec[2]. Al compararlo con vec[1] vemos que no es mayor, por lo que la posicin relativa respecto a vec[1] es la correcta. Paso 1 Seccin destino: vec[1] Seccin fuente: vec[2] .. vec[7]
Pos. relativa de vec[2] en el destino:

vec[1] vec[2] 54 23

17

12

vec[7] 32

vec [2] En el paso 2, nuestra seccin destino, ya est conformada por vec[1]y vec[2]. Tomamos nuevamente el primer ejemplar de la seccin fuente (vec[3]) que resulta ser 5. Al compararlo con el subEdicin Preliminar (bajo revisin) Pgina 5 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

conjunto destino, observamos que la posicin relativa del 5, es antes del 23 y del 54, por lo que insertaremos al 5 en vec[1]. Para ello debemos desplazar el 23 a vec[2] y el 54 a vec[3]. Paso 2 Seccin destino: vec[1] .. vec[2] Seccin fuente: vec[3] .. vec[7]
Pos. relativa de vec[3] en el destino:

vec[1] vec[2] vec[3] 23 54 5

17

12

vec[7] 32

vec [1] Podemos observar claramente como la parte izquierda del arreglo (seccin destino) va quedando ordenada. En el paso 3, tomamos vec[4] que es 17, y lo vamos comparando con los componentes de la seccin destino. As, notamos que el 17 debe quedar despus del 5 y antes del 23. Esto es, ubicamos vec[4] en vec[2] y desplazamos un lugar hacia la derecha vec[2] y vec[3]. Paso 3 Seccin destino: vec[1] .. vec[3] Seccin fuente: vec[4] .. vec[7]
Pos. relativa de vec[4] en el destino:

vec[1] vec[2] vec[3] vec[4] 23 54 17 5

12

vec[7] 32

vec [2] El procedimiento a seguir es idntico al anterior, mostrndose a continuacin los pasos correspondientes: Paso 4 Seccin destino: vec[1] .. vec[4] Seccin fuente: vec[5] .. vec[7]
Pos. relativa de vec[5] en el destino:

vec[1] vec[2] vec[3] vec[4] vec[5] 5 17 23 54 2

12

vec[7] 32

vec [1] Paso 5 Seccin destino: vec[1] .. vec[5] Seccin fuente: vec[6] .. vec[7]
Pos. relativa de vec[6] en el destino:

vec[1] 2

vec[3] vec[4] vec[5] vec[6] vec[7] 17 23 54 12 32

vec [3] Paso 6 Seccin destino: vec[1] .. vec[6] Seccin fuente: vec[7]
Pos. relativa de vec[7] en el destino:

vec[1] 2

12

17

23

vec[6] vec[7] 54 32

vec [6] Vector Ordenado vec[1] 2 5 12 17 23 32 vec[7] 54

Edicin Preliminar (bajo revisin)

Pgina 6 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

Dediqumonos ahora a reflejar los pasos seguidos en un algoritmo

Una vez que entendi la forma en que trabaja el mtodo, intente realizar el algoritmo por su cuenta, antes de proseguir con la lectura.

Como en la mayora de los ordenamientos, notamos la presencia de un ciclo exacto, el cual tendr en este caso especfico 6 iteraciones, es decir ir desde 2 hasta 7 (notar que comienza en 2 porque el primer componente ya se considera ordenado y no se opera).

OrdenaIntercalacion vec: tipoVector tope: integer

Almaceno en auxiliar la primera componente de la seccin fuente

auxiliar := vec [i] j := i - 1

i 2
tope

(vec [j] > auxiliar) AND (j > 0) vec [j + 1] := vec [j] dec [j]

vec [j + 1] := auxiliar

Desplazo una posicin a la derecha los componentes de la seccin destino hasta encontrar el lugar donde insertar auxiliar Inserto auxiliar en su p osicin correspondiente

Return

ORDENAMIENTO POR BURBUJA Este mtodo se basa principalmente en la comparacin de pares adyacentes dentro del arreglo. Al ordenar en forma ascendente, si la componente segunda es menor que la primera se efecta un intercambio, si es mayor o igual, no se realiza ninguna accin y se prosigue comparando el par compuesto por los valores contenidos en las posiciones 2 y 3 del arreglo. Esta operatoria se efecta repetidamente hasta lograr ordenar el vector. Realizando las comparaciones de a pares, los elementos ms pesados van cayendo poco a poco hacia el fondo del arreglo, mientras que las componentes ms livianas quedan en la parte superior. Veamos en la prctica cmo funciona este mtodo: Como dijimos, iremos comparando de a pares las componentes del vector. Comencemos comparando el par compuesto por vec[1] y vec[2]. Como el valor de vec[1] (23) es menor que el 54, no efectuamos ninguna accin. Proseguimos luego comparando el par vec[2] vec[3]. Al ser el 5 meEdicin Preliminar (bajo revisin) Pgina 7 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

nor que el 54 realizamos el intercambio correspondiente, es decir, ubicamos en vec[2] el valor de vec[3] y viceversa. La operatoria contina comparando ahora el par vec[3] vec[4]. Nuevamente, realizamos el intercambio al comprobar que el valor contenido en vec[4] es menor al contenido en vec[3]. De esta forma continuamos hasta comparar todos los pares del arreglo, es decir, esta primera iteracin finaliza cuando comparamos el par vec[6] vec[7]. ITERACIN 1 Paso 1 1 Par: vec[1] vec[2] Intercambio Paso 1 2 Par: vec[2] vec[3] Intercambio Paso 1 3 Par: vec[3] vec[4] Intercambio Paso 1 4 Par: vec[4] vec[5] Intercambio Paso 1 5 Par: vec[5] vec[6] Intercambio Paso 1 6 Par: vec[6] vec[7] Intercambio vec[1] vec[2] 23 54 NO vec[1] vec[2] vec[3] 54 5 23 SI vec[1] 23 SI vec[1] 23 SI vec[1] 23 SI vec[1] 23 SI vec[6] vec[7] 54 32 vec[5] vec[6] vec[7] 54 12 32 vec[4] vec[5] 54 2 vec[7] 32 vec[3] vec[4] 54 17 vec[7] 32 vec[7] 32 5 17 2 12 vec[7] 32

17

12

12

17

12

17

17

12

El lector atento observar que el valor mayor ha quedado en la ltima posicin, es decir, aquella que le corresponde, su posicin en el arreglo ya ordenado. Recordemos la analoga con las burbujas. El 54, al ser el elemento ms pesado, en el primer ciclo ha cado al fondo. Ntese que como el valor mayor ha alcanzado ya su ubicacin final, no es necesario preocuparse de l en los sucesivos pasos del ordenamiento. Es decir, volveremos a comparar todos los pares hasta terminar con aquel compuesto por vec[5] vec[6], sin reparar en el valor de vec[7], tal como se muestra a continuacin:

ITERACIN 2 Paso 2 1 Par: vec[1] vec[2] Intercambio


Edicin Preliminar (bajo revisin)

vec[1] vec[2] 23 5 SI

17

12

32

vec[7] 54

Pgina 8 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

Paso 2 2 Par: vec[2] vec[3] Intercambio Paso 2 3 Par: vec[3] vec[4] Intercambio Paso 2 4 Par: vec[4] vec[5] Intercambio Paso 2 5 Par: vec[5] vec[6] Intercambio vec[1] vec[2] vec[3] 23 17 5 SI vec[1] 5 SI vec[1] 5 SI vec[1] 5 NO vec[5] vec[6] vec[7] 23 32 54 vec[4] vec[5] 23 12 vec[7] 54 vec[3] vec[4] 23 2 vec[7] 54 2 12 32 vec[7] 54

17

12

32

17

32

17

12

Tal y como anteriormente ocurri que el valor de mayor magnitud, el 54, cay al fondo del arreglo, en este caso ha sucedido lo mismo con el 32, el segundo valor mayor en magnitud, el cual ha quedado en vec[6], su ubicacin final. As, vemos como vamos ordenando el vector, dejando en las posiciones ubicadas a la derecha los valores en su posicin correcta. En cada paso subsiguiente el nmero de pares a comparar es cada vez menor, hasta que, finalmente, llegamos a comparar slo el primer par, paso luego del cual queda ordenado totalmente el arreglo. ITERACIN 3 Paso 3 1 Par: vec[1] vec[2] Intercambio Paso 3 2 Par: vec[2] vec[3] Intercambio Paso 3 3 Par: vec[3] vec[4] Intercambio Paso 3 4 Par: vec[4] vec[5] Intercambio vec[1] vec[2] 5 17 NO vec[1] vec[2] vec[3] 17 2 5 SI vec[1] 5 SI vec[1] 5 NO vec[4] vec[5] 17 23 vec[7] 54 vec[3] vec[4] 17 12 vec[7] 54 vec[7] 54 2 12 23 32 vec[7] 54

12

23

32

23

32

12

32

Edicin Preliminar (bajo revisin)

Pgina 9 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

ITERACIN 4 Paso 4 1 Par: vec[1] vec[2] Intercambio Paso 4 2 Par: vec[2] vec[3] Intercambio Paso 4 3 Par: vec[3] vec[4] Intercambio vec[1] vec[2] 5 2 SI vec[1] vec[2] vec[3] 5 12 2 NO vec[1] 2 NO vec[3] vec[4] 12 17 vec[7] 54 vec[7] 54 12 17 23 32 vec[7] 54

17

23

32

23

32

ITERACIN 5 Paso 5 1 Par: vec[1] vec[2] Intercambio Paso 5 2 Par: vec[2] vec[3] Intercambio vec[1] vec[2] 2 5 NO vec[1] vec[2] vec[3] 5 12 2 NO vec[7] 54 12 17 23 32 vec[7] 54

17

23

32

Ntese que al final de la iteracin 4 ya qued el arreglo ordenado. Sin embargo, ste ha sido un caso particular, debiendo realizarse siempre las n-1 iteraciones.

ITERACIN 6 Paso 6 1 Par: vec[1] vec[2] Intercambio vec[1] vec[2] 2 5 NO 12 17 23 32 vec[7] 54

Vector Ordenado

vec[1] 2

12

17

23

32

vec[7] 54

Una vez que entendi la forma en que trabaja el mtodo, pruebe realizar el algoritmo por su cuenta, antes de proseguir con la lectura.

Edicin Preliminar (bajo revisin)

Pgina 10 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

En este mtodo, podemos distinguir dos ciclos, el de afuera que itera desde 1 hasta N-1 y el de adentro (el que va recorriendo los pares) desde 1 hasta N-I.

Ciclo interior: Lo que hemos denominado pasos en el ejemplo.

OrdenaBurbuja vec: tipoVector tope: integer

Ciclo exterior: lo que hemos denominado iteracin en el ejemplo

i 1
tope-1

j 1 tope-i

vec [j] > vec [j+1]

auxiliar := vec [j] vec [j] := vec [j+1] vec [j+1] := auxiliar

Intercambio de los valores de las variables


Return

Al comienzo del apunte dijimos que una de las metas fundamentales que se buscaba al ordenar con computadoras era la velocidad. La rapidez en el proceso de ordenamiento depende no slo de la velocidad del equipo con el cual trabajamos, sino, de manera mucho ms decisiva de la forma en la cual ordenamos. Existe una gran variedad de algoritmos de ordenamiento, de hecho, hemos presentado tres formas diferentes de obtener el mismo resultado. Conforme se ha ido requiriendo velocidades mayores, se han ido desarrollando algoritmos mucho ms complicados, los cuales son ampliamente ms eficientes que los aqu presentados. En el prrafo anterior hemos introducido el concepto de la eficiencia de este tipo de algoritmos. En efecto, teniendo en cuenta la cantidad de elementos que hemos de ordenar, se pueden obtener frmulas matemticas que indicarn el nmero de comparaciones necesarias. Es decir, obtienen el nmero de comparaciones en funcin de la cantidad de elementos (n). A grandes rasgos, podemos destacar que existen dos tipos de ordenamientos:
q

Directos o bsicos: Seleccin, Insercin, Burbuja Indirectos o avanzados: Shell, QuickSort, HeapSort, etc.
q q

Si bien no ahondaremos demasiado en la cuestin, diremos que en general la funcin de comparaciones con respecto a la cantidad de componentes a ordenar en el caso de los ordenamientos di-

Edicin Preliminar (bajo revisin)

Pgina 11 de 12

Universidad Tecnolgica Nacional Facultad Regional Buenos Aires Ingeniera en Sistemas de Informacin

Algoritmos y Estructuras de Datos Proyecto CoViE Comunidad Virtual Educativa Ordenamiento de arreglos

rectos es generalmente una funcin polinmica segundo grado, es decir, la cantidad de comparaciones aumenta en forma polinomial con respecto a N. En el caso de los mtodos avanzados, esta funcin se expresa en trminos n-logartmicos, es decir, esta relacin aumenta n-logartmicamente. Para ordenar arreglos pequeos, ambos brindan una eficiencia similar, pero a medida que n se hace cada vez mayor, la diferencia de velocidad se hace realmente notable.

Note cmo para valores de n grandes, sobre el eje X, la funcin de comparacin aumenta mucho ms rpido en el caso de los mtodos directos.

Nota: Los mtodos de ordenamiento indirectos se estudiarn en materias ms avanzadas de la carrera. El lector interesado podr encontrar un muy buen anlisis de estos mtodos en el libro Algoritmos y Estructuras de Datos de Niklaus WIRTH.

Edicin Preliminar (bajo revisin)

Pgina 12 de 12

Вам также может понравиться