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

Ordenación método de la burbuja

Estas en el tema de Ordenación método de la burbuja en el foro de C/C++ en Foros del Web. Hola, Por qué en el caso medio tenemos 3(n^2-n)/4 comparaciones. Entiendo que viene de (n-1)/2 * (3/2)*n Pero no entiendo por qué el (3/2) * ...
  #1 (permalink)  
Antiguo 12/12/2015, 12:31
 
Fecha de Ingreso: diciembre-2015
Mensajes: 3
Antigüedad: 8 años, 4 meses
Puntos: 0
Ordenación método de la burbuja

Hola,

Por qué en el caso medio tenemos 3(n^2-n)/4 comparaciones. Entiendo que viene de (n-1)/2 * (3/2)*n
Pero no entiendo por qué el (3/2) * n. ¿Es decir, por qué hay 3 intercambios por cada elemento desordenado?

Gracias anticipadas.

Un cordial saludo
  #2 (permalink)  
Antiguo 12/12/2015, 12:57
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Ordenación método de la burbuja

El caso más desfavorable implica A=(n^2-n)/2 comparaciones.
El caso más favorable, B=n^2.
El término medio, dado que se supone un sistema uniformemente distribuido, serán (A+B)/2=(n^2+(n^2-n)/2)/2=(3n^2-n)/4 comparaciones.

No se de donde sacas lo de los 3 intercambios... Estas hablando de un término medio (que no trata de ningún caso en concreto) y además, esta fórmula únicamente habla de comparaciones, no de intercambios.

Es decir, si inicializas una lista con valores aleatorios, la ordenas y contabillizas las comparaciones realizadas y repites el proceso durante muchas veces, el valor medio tenderá a parecerse al de la fórmula que comentas.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 12/12/2015, 17:40
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Ordenación método de la burbuja

Exacto, pero si todavia tienes dudas prueba ejemplos con el codigo y asi refuerzas la teoria.
Código C++:
Ver original
  1. long double Cont;
  2.  
  3. void ordenarBurbuja(int A[], int n)
  4. /* A[]= vector a ordenar
  5.    n= tamaño del vector
  6. */
  7. {
  8.     int i=0, j=0;
  9.     int aux;
  10.     for (i=1; i<n; i++)
  11.     {
  12.         Cont++;
  13.         for(j=0; j<n-i; j++)
  14.         {
  15.             Cont++;
  16.             if (A[j]>A[j+1])
  17.             {
  18.                 aux=A[j];
  19.                 A[j]=A[j+1];
  20.                 A[j+1]=aux;
  21.             }
  22.         }
  23.     }
  24. }
  #4 (permalink)  
Antiguo 13/12/2015, 09:41
 
Fecha de Ingreso: diciembre-2015
Mensajes: 3
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Ordenación método de la burbuja

Hola pues ya me he liado del todo.

Por qué en el caso más favorable es n^2, no sería 0? Es que creo que algoritmo de la burbuja hay varios, con optimización y sin optimización. Concretando, yo tengo esto, por ejemplo en Java:

Código C:
Ver original
  1. void ordenarBurbuja(int m[], int ne)
  2. {
  3.     int s = 1;
  4.     int aux = 0;
  5.     int i = 0;
  6.    
  7.     while ( (--ne > 0)
  8.            && (s == 1) ) {
  9.        
  10.         s = 0;
  11.        
  12.         for (i = 1; i <= ne; i++) {
  13.            
  14.             if (m[i-1] > m[i]) {
  15.                 aux = m[i-1];
  16.                 m[i-1] = m[i];
  17.                 m[i] = aux;
  18.                 s = 1;
  19.             }
  20.         }
  21.     }
  22. }

Según el libro que estoy leyendo:

Cuando se analiza un método de ordenación, hay que determinar cuántas comparaciones intercambios se realizan para el caso más favorable, para el caso medio y para el caso más desfavorable.

En el método de la burbuja se realizan (n-1)(n/2) = (n^2-n)/2 comparaciones en el caso más desfavorable, donde n es el número de elementos a ordenar. Para el caso más favorable (la lista está ordenada), el número de intercambios es 0. Para el caso medio es 3(n^2-n)/4, hay tres intercambios por cada elemento desordenado. Y para el caso menos favorable, el numero de intercambios es 3(n^2-n)/2. El análisis matemático que conduce a estos valores queda fuera del propósito de este libro. El tiempo de ejecución es un múltiplo de n^2 y está directamente relacionado con el número de comparaciones y de intercambios.

En el caso mas desfavorable lo entiendo porque el primer bucle sería entero , esto es n-1 veces multiplicado por las comparaciones que se hacen el segundo que es n/2. Lo del número de intercambios de 0 lo entiendo también. Pero el n^2 que dices y el resultado para el número medio no lo acabo de entender

Gracias por la ayuda ;)

Un saludo
  #5 (permalink)  
Antiguo 13/12/2015, 14:00
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Ordenación método de la burbuja

Piensa que estas hablando de comparaciones no se sustituciones. Si has visto como funciona el algoritmo entenderás que hay que hacer un número mínimo de comparaciones para asegura que la lista esta ordenada y eso es independiente de lo optimizado que este el algoritmo... Si consigues que el caso óptimo realice un número menor de comparaciones es porque estas usando otro algoritmo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: burbuja, int
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 17:14.