11
En computación un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida reordenamiento de la entrada que satisfaga la relación de orden dada. ALGORITMO DE ORDENAMIENTO

Algoritmos de ordenamineto y busqueda

Embed Size (px)

Citation preview

Page 1: Algoritmos de ordenamineto y busqueda

En computación un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida reordenamiento de la entrada que satisfaga la relación de orden dada.

ALGORITMO DE ORDENAMIENTO

Page 2: Algoritmos de ordenamineto y busqueda

ORDENAMIENTO DE BURBUJA

Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.

int temp, i, j; for (i = 0; i < util_v -1 ; i++) { for (j = i + 1; j < util_v ; j++) { if (v[i] > v[j]) { temp = v[i]; v[i] = v[j]; v[j] = temp; } } } }

Page 3: Algoritmos de ordenamineto y busqueda

EL ORDENAMIENTO POR SELECCIÓN

(Selection Sort) Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación intercambiar () sería más costosa en este caso.

for (int i = 0; i < a.length - 1; i++) { int min = i;for (int j = i + 1; j < a.length; j++) { if (a[j] < a[min]) {min = j;}} if (i != min){ int aux= a[i];a[i] = a[min];a[min] = aux;}}}

Page 4: Algoritmos de ordenamineto y busqueda

ORDENAMIENTO POR INSERCIÓN(insertion sort) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar en forma arbitraria.

void Insercion(int numbers[], int array_size) {int i, a, index; for (i=1; i < array_size; i++) {index = numbers[i];a = i-1;while (a >= 0 && numbers[a] > index) {numbers[a + 1] = numbers[a]; a--; } numbers[a+1] = index;}}

Page 5: Algoritmos de ordenamineto y busqueda

ORDENAMIENTO SHELL

El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:El ordenamiento por inserción es eficiente si la entrada está "casi ordenada".El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez

El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños

Page 6: Algoritmos de ordenamineto y busqueda

QUICKSORTEl algoritmo trabaja de la siguiente forma:Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.

Page 7: Algoritmos de ordenamineto y busqueda

ORDENAMIENTO POR MEZCLA Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla.Mezclar las dos sublistas en una sola lista ordenada.El ordenamiento por mezcla incorpora dos ideas principales para mejorar su tiempo de ejecución:

Page 8: Algoritmos de ordenamineto y busqueda

(Redirigido desde «Ordenamiento por montículos»)Animación mostrando el funcionamiento del heapsort.El ordenamiento por montículos (heapsort en inglés) es un algoritmo de ordenamiento no recursivo, no estable, con complejidad computacional Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado.

HEAPSORT

Page 9: Algoritmos de ordenamineto y busqueda

ALGORITMO DE BÚSQUEDA.

Es aquel que está diseñado para localizar un elemento con ciertas propiedades dentro de

una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez.

Page 10: Algoritmos de ordenamineto y busqueda

ALGORITMOS DE BÚSQUEDA SECUENCIAL.

Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del arreglo hasta encontrarlo, o hasta que se llegue al final.

Características:No requiere ningún proceso previo de la tabla, ni ningún conocimiento sobre la distribución de las llaves

Implementación:Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cíclica.

Page 11: Algoritmos de ordenamineto y busqueda

ALGORITMOS BINARIOS.. Para poder llevarse acabo esta, necesita tener el arreglo ordenado. Básicamente, el argumento se compara con la llave del elemento intermedio de la tabla. Si son iguales, la búsqueda termina exitosamente; en caso contrario, debe buscarse en la mitad superior o inferior en la tabla en una forma similar.

Características:Partiendo de un vector ordenado, se mira la posición central si el numero buscado es mas pequeño que a mitad es que está en el lado de la izquierda y si es mayor en el lado de la derecha