No entiendo algoritmo de ordenamiento

Iniciado por JuszR, 2 Noviembre 2010, 12:13 PM

0 Miembros y 1 Visitante están viendo este tema.

ghastlyX

Cita de: piou en  2 Noviembre 2010, 15:55 PM
Es bastante simple, para cada numero mira si los siguientes son menores, en el caso de que lo sean, llama a la función que los cambia, es una manera eficiente de ordenar una lista. Por ahí te han dejado un link a la wikipedia que lo explica bastante bien.

No es una forma nada eficiente de ordenar el algoritmo de ordenación por selección. Lo que sucede es que es muy simple y por eso es de los primeros algoritmos que se enseñan. Este algoritmo tiene un coste de O(n2), mientras que otros algoritmos de ordenación como heap sort, merge sort o quicksort tienen costes O(nlogn) (quicksort en caso peor es cuadrático, pero en caso medio tiene esa complejidad). De los algoritmos cuadráticos típicos (selection sort, bubble sort e insertion sort), el único que sirve es insertion sort, porque aunque sea cuadrático en caso peor, generalmente es algo mejor y para entradas pequeñas es más rápido que los que he dicho antes.

piou

Cita de: ghastlyX en  2 Noviembre 2010, 16:06 PM
Cita de: piou en  2 Noviembre 2010, 15:55 PM
Es bastante simple, para cada numero mira si los siguientes son menores, en el caso de que lo sean, llama a la función que los cambia, es una manera eficiente de ordenar una lista. Por ahí te han dejado un link a la wikipedia que lo explica bastante bien.

No es una forma nada eficiente de ordenar el algoritmo de ordenación por selección. Lo que sucede es que es muy simple y por eso es de los primeros algoritmos que se enseñan. Este algoritmo tiene un coste de O(n2), mientras que otros algoritmos de ordenación como heap sort, merge sort o quicksort tienen costes O(nlogn) (quicksort en caso peor es cuadrático, pero en caso medio tiene esa complejidad). De los algoritmos cuadráticos típicos (selection sort, bubble sort e insertion sort), el único que sirve es insertion sort, porque aunque sea cuadrático en caso peor, generalmente es algo mejor y para entradas pequeñas es más rápido que los que he dicho antes.

La sencillez no es una manera de eficiencia? Je je, tienes razón, pero para casos en los que la lista es pequeña, yo prefiero usar un algoritmo pequeño como este que tampoco supone un gaste de rendimiento demasiado perceptible y es más fácil de implementar.

flony

a ver  :-( no estudio para ingeniero en sist....ghastlyX  explicate bien q me intereso eso...pero en castellano basico
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Akai

#13
@Flony:
GhastlyX se está refiriendo al número de operaciones (coste) que realiza el algoritmo según el tamaño (talla) de la lista que le pases. En este caso concreto, el ordenamiento por el método de la burbuja realiza en su peor caso(el caso en el que la lista que quieras ordenar esté invertida) n^2 operaciones, siendo n el tamaño de la lista.

Existen luego otros algoritmos que realizan el mismo ordenamiento en menos operaciones (con costes n*log (n), o simplemente lineales (n)).

Lo mejor sería que leyeses sobre Costes computacionales.

flony

bien ahi Akai  ;-)  me pongo a buscar eso
si un problema no tiene solucion entonces no es un problema...es algo inevitable