Tecnología

Inicio

Cómo ordenar una lista de enteros

Cómo ordenar una lista de enteros


Ordenar una lista de software es una operación importante. Encontrar algo en una lista sin ordenar significa, en promedio, pasando la mitad de la lista. Encontrar algo en una lista ordenada tiene, como máximo, el logaritmo en base dos de la longitud de la lista. Por ejemplo, se podría esperar que mirar 500.000 cosas para encontrar lo que quieres en una lista sin ordenar de un millón de cosas. Si ellos fueron ordenados que se podría esperar a ver unos 20 cosas.

La Orden de Ordenar

La eficiencia de los algoritmos - incluyendo algoritmos de ordenación - se expresan a menudo en "notación O grande." Esta junta está escrito (N ^ 2) y pronunciado "orden N al cuadrado." La notación describe lo que sucede cuando el "tamaño" del problema crece. Si es O (n ^ 2), entonces el tiempo crece como el cuadrado del tamaño - el número de cosas que va a ordenar. Si se tarda tres segundos para ordenar un millón de artículos, se tardará 12 segundos para ordenar dos millones de artículos. El tamaño doble y el tiempo de toma 2 ^ 2 = 4 veces más largo.

A Ordenar simple

Una muy simple, fácil de programar tipo requeriría otra lista vacía del mismo tamaño que la lista de números enteros que desea clasificar. Ir a través de la matriz de enteros una vez, buscando el menor entero. Cuando lo encuentre, lo marca como "tomado" y ponerlo en al principio de la lista vacía. Para ello, una vez más, encontrar el número entero más pequeño no tomadas y ponerlo en la siguiente ranura disponible en la lista ordenada. Repita este último paso hasta que todo está marcado que consuman. Este algoritmo de clasificación es O (n ^ 2) y sólo es adecuado para las listas pequeñas. Que "no escala bien" por lo que es prohibitivamente lento para grandes listas.

El Ordenar Ripple

El tipo o especie de burbuja ondulación se llama así por la forma en que los elementos permanecen en la misma lista, mientras que siendo ordenados. Es un gran favorito con los programadores, ya que ahorra espacio y es extremadamente fácil de escribir y depurar. En el peor caso es O (N ^ 2), pero en el mejor de los casos es O (N). En el caso promedio es O (NlogN), que es casi tan bueno como se pone. Ir a través de la lista que mira pares de números enteros, y cambiar si están fuera de servicio. Siga haciendo esto hasta que la lista está ordenada.

Clasifica más avanzadas

Hay una gran variedad de géneros - fusión como género y especie rápida - que el trabajo en tiempo O (NlogN), pero son difíciles de escribir y realizar menudo peor que la ordenación de burbuja en las listas cortas. Estos algoritmos sólo debe considerarse cuando enormes listas se ordenan con frecuencia. Si puede utilizar detalles acerca de los datos para ayudar con la clase, a veces es posible conseguir la orden a O (N), sino que es el límite teórico absoluto. En términos generales, el tiempo humano es más valioso que el tiempo en la computadora y es una buena idea para mantener el código tan simple como sea posible.