Complejidades de las operaciones básicas de algoritmos de búsqueda y clasificación [cerrado]

8

Wiki tiene una buena hoja de trucos, pero no implica que no. de comparaciones o permutas. (aunque el número de intercambios generalmente decide su complejidad). Entonces creé lo siguiente. ¿La siguiente información es correcta? Avíseme si hay algún error, lo corregiré.

Tipo de inserción:

  • Caso promedio / Peor caso: ; sucede cuando la entrada ya está ordenada en orden descendenteΘ(n2)
  • Mejor caso: Θ(n) ; cuando la entrada ya está ordenada
  • Número de comparaciones: Θ(n2) en el peor de los casos y Θ(n) en el mejor de los casos
  • No. de intercambios: Θ(n2) en el peor / promedio caso y 0 en el mejor caso

Selección de selección:

  • Caso promedio / Peor caso / Mejor caso: Θ(n2)
  • No. de comparaciones: Θ(n2)
  • No. de intercambios: Θ(n) en el peor / promedio caso y 0 en el mejor de los casos. A lo sumo, el algoritmo requiere N intercambios, una vez que intercambias un elemento en su lugar, nunca lo vuelves a tocar.

Ordenar fusión:

  • Caso promedio / Peor caso / Mejor caso: ; no importa en absoluto si la entrada está ordenada o noΘ(nlgn)
  • No. de comparaciones: en el peor de los casos y en el mejor de los casos; suponiendo que estamos fusionando dos conjuntos de tamaño n & m dondeΘ(n+m)Θ(n)n<m
  • No. de intercambios: ¡No intercambios! [pero requiere memoria adicional, no ordenación in situ]

Ordenación rápida:

  • Peor caso: ; sucede que la entrada ya está ordenadaΘ(n2)
  • Mejor caso: ; cuando pivote divide la matriz exactamente en la mitadΘ(nlogn)
  • Número de comparaciones: en el peor de los casos y en el mejor de los casosΘ(n2)Θ(nlogn)
  • No. de intercambios: en el peor de los casos y en el mejor de los casosΘ(n2)0

Ordenamiento de burbuja:

  • Peor caso:Θ(n2)
  • Mejor caso: ; en ya ordenadoΘ(n)
  • No. de comparaciones: en el peor de los casos y el mejor de los casosΘ(n2)
  • No. de intercambios: en el peor de los casos y en el mejor de los casosΘ(n2)0

Búsqueda lineal:

  • Peor caso: ; clave de búsqueda no presente o último elementoΘ(n)
  • Mejor caso: ; primer elementoΘ(1)
  • No. de comparaciones: en el peor de los casos y en el mejor de los casosΘ(n)1

Búsqueda binaria:

  • Peor caso / Caso promedio:Θ(logn)
  • Mejor caso: ; cuando la clave es el elemento medioΘ(1)
  • No. de comparaciones: en el peor / promedio caso y en el mejor casoΘ(logn)1

  1. Solo he considerado algoritmos básicos de búsqueda y clasificación.
  2. Se supone anteriormente que los algoritmos de clasificación producen resultados en orden ascendente
  3. Fuentes: El impresionante CLRS y este Wiki
avi
fuente
Para discutir los méritos de esta (tipo de) pregunta, únase a nosotros en el chat .
Raphael
1
Esta no es una pregunta, así que está fuera de tema.
David Richerby
Yo también voté para cerrar. Quizás esto también sea difícil de salvar porque la "pregunta" es bastante amplia (¿cuáles son exactamente los algoritmos básicos de búsqueda y clasificación?)
Juho

Respuestas:

-2

Para el algoritmo general de burbuja, las comparaciones del peor de los casos son Pero para el algoritmo de caso especial, en el que agrega una bandera para indicar que ha habido un intercambio en el paso anterior. Si no hubo intercambios, salimos del ciclo ya que la matriz ya está ordenada. En este caso, las comparaciones son no 0.Θ(n2)n

Para la clasificación rápida, ha mencionado que los intercambios del peor de los casos son . Bueno, el peor de los casos para la ordenación rápida es cuando todos los elementos están ordenados, por lo que no habrá intercambios, por lo que debería ser cero.n2

Nikhil Mahajan
fuente
1
No entiendo tu respuesta. La detección de "no swaps" en el tipo de burbuja ciertamente lo hace más rápido, pero si la entrada está en el orden opuesto a la salida, aún necesita swaps , incluso con la detección "no swap". Quicksort normalmente se ejecuta en el tiempo por lo que el mejor caso no puede ser swaps. Θ(n2)O(nlogn)n2
David Richerby
Gracias por editar mi comentario, soy nuevo en SE. Bueno, debería haber sido más claro en esto. Acabo de editar mi comentario anterior. Estaba tratando de decir que las mejores comparaciones de casos no pueden ser 0 en el caso de Bubble sort que tiene que n. cuando la matriz está ordenada y está utilizando la bandera para indicar el intercambio en el pase anterior. Si no hay intercambio en el pase anterior, la matriz ya está ordenada, por lo que no es necesario ejecutar más para el primer paso, estamos haciendo n comparaciones. Para la clasificación rápida, estoy hablando de comparaciones y swaps, no de complejidad de tiempo, en el peor de los casos, todos los elementos están ordenados, por lo que no es necesario realizar swaps.
Nikhil Mahajan
En el caso normal, quicksort se ejecuta en el tiempo . Por lo tanto, el mejor caso también son los pasos de tiempo (puede ser más rápido pero solo da un límite superior). En los pasos , no puede hacer nada veces: comparaciones, intercambios o cualquier otra cosa. Tampoco puede usar más de memoria. El mejor caso para cualquier medida de complejidad no puede ser más que . O(nlogn)O(nlogn)O()O(nlogn)n2O(nlogn)O(nlogn)
David Richerby
Tienes razón, edité mi respuesta para la clasificación rápida.
Nikhil Mahajan