Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cual es la diferencia?

Estas en el tema de Cual es la diferencia? en el foro de C/C++ en Foros del Web. Hola. tengo una duda alguien que sepa responderme por favor. la diferencia entre: - ordenamiento burbuja - quicksorft muchas gracias....
  #1 (permalink)  
Antiguo 07/09/2009, 16:36
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Cual es la diferencia?

Hola. tengo una duda alguien que sepa responderme por favor.

la diferencia entre:

- ordenamiento burbuja - quicksorft

muchas gracias.
  #2 (permalink)  
Antiguo 08/09/2009, 23:14
 
Fecha de Ingreso: septiembre-2009
Ubicación: Burgos
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Cual es la diferencia?

Bueno pues la diferencia es bastante grande, sobre todo en cuanto a rendimiento. De hecho yo diría que la única semejanza es que ambos ordenan, no se parecen en nada.

Burbuja:
Pongamos el ejemplo de que tenemos cuatro cartas en este orden: 2 4 3 1.
Queremos ordenarlas y vamos a hacerlo a modo de burbuja:

+ Comparamos la primera y la segunda (el 2 y el 4).
+ Están ordenadas, no hacemos nada, nuestro vector sigue siendo (2 4 3 1).
+ Comparamos la segunda y la tercera (el 4 y el 3).
+ Están desordenadas, invertimos el orden, tenemos (2 3 4 1).
+ Comparamos la tercera y la cuarta (el 4 y el 1).
+ Están desordenadas, invertimos el orden, tenemos (2 3 1 4).

Ya hemos hecho la pasada completa, el vector no está ordenado, pero de lo que sí nos hemos asegurado es de que el último elemento del vector está donde debe estar (es decir, el "4" está en su sitio).

Al colocarse en cada pasada un elemento, el algoritmo básico se basa en hacer n pasadas, tantas como elementos tengamos (en nuestro caso 4).

Hay varias mejoras en este algoritmo:
+ La primera y más evidente es que si en la primera pasada, el último elemento está ya en su sitio, en la segunda no hará falta comparar ese elemento, así que en cada pasada podríamos parar de comparar un elemento antes.
+ La segunda es que si en una pasada no hemos hecho ningún intercambio es que el vector está ordenado, así que podríamos añadirlo como criterio de parada.


Quicksort:
Es mucho más eficiente en cuanto a rendimiento medio y para vectores grandes pero más difícil de entender.
Seguimos con el ejemplo de las 4 cartas: 4 2 1 3.
+ Elegimos un valor "pivote" cualquiera (se suele el valor que esté en el medio del vector), elegimos el 2 por ejemplo.
+ Lo que hay que hacer es buscar todos los elementos a la izquierda del pivote y ver si son mayores que él, si lo son, moverlos a un vector derecha.
+ Es decir, los elementos a la izquierda del 2, son únicamente el 4, 4>2, tendremos que mover el 4 al vector derecha del pivote.
+ Ahora miramos la derecha del pivote y hacemos lo mismo pero al revés, 1<2, así que debería estar en la parte izquierda; en cambio 3!<2 así que está donde debe estar, en la derecha.
+ Ahora tenemos dos vectores, el vector izquierda con (1) y el vector derecha (4 3).
+ Hacemos lo mismo con los vectores resultantes, elegimos un pivote, bla, bla, bla xD.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:43.