CLIC AQUI PARA MOSTRAR/OCULTAR EL CHAT
Si desea charlar con otros miembros de Cientifi, pulse en el botón superior para expandir el chat.
Aviso Importante: Directrices sobre las preguntas y el funcionamiento.
Trucos de edición Crear Enlaces "<http://link>" -> "http://link". Usar LaTeX -> (tex)codigo(/tex).

Siempre tengo la duda cuando estoy ordenando una lista de cual será la forma óptima de hacerlo, ya que dependiendo de como lo hagas darás mas pasos o menos.


Comparte el conocimiento:


preguntado el 29/01/11 a las 08:28

materia%20oscura's gravatar image

materia oscura
254

editado el 29/01/11 a las 23:26


El número de pasos que necesitarás para ordenar una lista depende de su estado inicial (o sea, lo desordenada que esté) y de su tamaño (el número de elementos).

Existen muchos algoritmos de ordenación y para compararlos los científicos computacionales determinan cómo crece el número de pasos necesario en función del tamaño de la lista, para tres posibles casos: el mejor, el peor y el promedio. Esperar el caso mejor no tiene mucho sentido, por lo que supongo que tú estarás interesado más bien en el caso peor o en el promedio.

La mayoría de los métodos de ordenación "sencillos" tienen una complejidad en promedio de \mathcal O(n^2). Esto significa que el número de pasos necesarios es proporcional al cuadrado del número de elementos de la lista. Por ejemplo, el método de "inserción" que es el que usas normalmente al ordenar una mano de cartas, tiene esa complejidad.

En este algoritmo comienzas examinando tus cartas por la izquierda. Supones que la primera ya está en su sitio y tomas la segunda. Si es menor que la primera, la pones a su izquierda, si es mayor la dejas donde está y vas a por la tercera. Tomas ésta y la insertas en donde corresponda entre las dos primeras (a su izquierda, en medio o la dejas donde estaba). Haces lo mismo con la cuarta, etc. En cada paso supones ordenadas las primeras cartas e insertas la siguiente donde corresponda entre esas primeras, hasta llegar a la última carta.

El tiempo requerido por ese algoritmo crece con el cuadrado del número de cartas. La fórmula exacta del crecimiento no suele darse. Al decir que es \mathcal O(n^2) se está diciendo que podría ser n^2, o 1000n^2, o 50n^2+200n+70, etc. es decir, que será una fórmula polinomial y el mayor exponente de n en esa fórmula, es 2.

Existen algoritmos mejores, y no son difíciles de implementar en un ordenador, pero sí quizás más difíciles de hacer "en la cabeza" o en el papel. Los mejores algoritmos tienen una complejidad media de \mathcal O(n\log n). Uno de los más populares se denomina Quicksort.

He leído que hay incluso algoritmos más rápidos, para el caso de querer ordenar enteros, pero no he podido encontrar detalles.

En wikipedia tienes una página con un completo listado de algoritmos de ordenación que especifica la complejidad de cada uno.

respondido el 29/01/11 a las 11:15

Zzz's gravatar image

Zzz
158419

editado el 29/01/11 a las 14:37

Me has aclarado mucho el tema Zzz, es mas el Quicksort me parece muy bueno, gracias

( el 29/01/11 a las 23:27) materia oscura materia%20oscura's gravatar image
Su respuesta
cambiar vista previa

Seguir esta pregunta

Por Email:

Una vez que acceda al sistema será posible suscribirse a cualquier actualización aquí

Por RSS:

Respuestas

Respuestas y Comentarios

Etiquetas de la pregunta:

×88
×4
×1
×1

pregunta formulada: el 29/01/11 a las 08:28

pregunta vista: 2,044 veces

última actualización: el 29/01/11 a las 23:31

Trucos para editar

  • *italica*
  • **negrita**
  • --tachado--
  • link
    [texto](http://url.com/ "título")
  • imagen
    ![alt texto](/path/img.jpg "título")
  • lista numerada:
    1. Foo
    2. Bar
  • Puede usar etiquetas HTML basicas
  • Escribir en LaTeX:
    (tex)codigo(/tex)

powered by OSQA