Comparación de algoritmos de clasificación
Diferencias entre ordenación por selección, ordenación por combinación y ordenación rápida
Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.
Ordenar es el proceso de organizar datos de acuerdo con ciertos estándares. Además del orden numérico ascendente, puede utilizar varios criterios, como estado, nombre o hora de creación.
clasificación de selección
Encuentra el valor más pequeño en la sección restante y reemplázalo con el anterior.
for (int i = 0; i < Count - 1; ++i)
{
int MinIndex = i;
for (int j = i + 1; j < Count; ++j)
{
if (Values[j] < Values[MinIndex])
{
MinIndex = j;
}
}
std::swap(Values[i], Values[MinIndex]);
}
Fácil de implementar, pero el número de comparaciones esO(N²)Por lo tanto, no es adecuado para grandes volúmenes de datos.
fusionar ordenar
Divida la matriz por la mitad, ordénelas y luego combínelas. La complejidad del tiempo esO(N log N)Se puede implementar como una clasificación estable, pero la fusión requiere memoria temporal.
clasificación rápida
Divida los valores pequeños y grandes según el pivote y reorganice cada sección. El promedio esO(N log N)Sin embargo, si la selección de Pivot sigue siendo mala,O(N²)Puedes bajar a
En el código C++ real, en lugar de recrear la alineación usted mismo,std::sortystd::stable_sortÚselo primero.
std::sort(Units.begin(), Units.end(),
[](const Unit& A, const Unit& B)
{
return A.Speed > B.Speed;
});
Implementar el algoritmo directamente estudiándolo y utilizar una biblioteca estándar verificada en el código del producto tiene diferentes propósitos.