Estoy intentando el tipo de burbuja. Hay 5 elementos y la matriz no está ordenada. El peor caso para burbuja sort shuold sea O (n^2).El peor caso de clasificación de burbuja es O (n * n), ¿cómo?
Como exmaple estoy usando
A = {5, 4, 3, 2, 1}
En este caso la comparación debería ser 5^2 = 25. Uso de verificación manual y el código de , me estoy haciendo el recuento de comparación sea 20. a continuación se presenta el código implemenation ordenamiento de burbuja
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortingAlgo
{
class Program
{
public static int[] bubbleSort(int[] A)
{
bool sorted = false;
int temp;
int count = 0;
int j = 0;
while (!sorted)
{
j++;
sorted = true;
for (int i = 0; i < (A.Length - 1); i++)
{
count++;
if(A[i] > A[i+1])
{
temp = A[i];
A[i] = A[i+1];
A[i+1] = temp;
sorted = false;
}
Console.Write(count + ". -> ");
for(int k=0; k< A.Length; k++)
{
Console.Write(A[k]);
}
Console.Write("\n");
}
}
return A;
}
static void Main(string[] args)
{
int[] A = {5, 4, 3, 2, 1};
int[] B = bubbleSort(A);
Console.ReadKey();
}
}
}
salida está siguiendo
- -> 45321
- -> 43521
- -> 43251
- -> 43215
- -> 34215
- -> 32415
- -> 32145
- -> 32145
- -> 23145
- -> 21345
- -> 21345
- -> 21345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
¿Alguna idea de por qué las matemáticas no son 25?
O (N^2) establece que existe una C que proporciona un límite superior para todos tales N. Cuando dices "C sería aproximadamente 1/2", pareces estar hablando del número más pequeño posible que satisface las condiciones para C. De hecho, para un algoritmo dado, puede que no exista un C mínimo posible: el conjunto de números reales la satisfacción de la propiedad podría estar abierta a continuación. El tipo de burbuja es el peor caso n (n-1)/2 comparaciones, ¿no? En cuyo caso, existe la menor C posible, y es exactamente 1/2. –
Sí, creo que su resumen es correcto: me refería específicamente al caso de clasificación de burbujas, y por qué no es exactamente n * n (ya que solo se necesitan la mitad de las mismas en el peor de los casos, y menos para el caso óptimo, que es n, para una matriz ya ordenada). – StaxMan