2010-12-13 11 views
7

Duplicar posible:
Plain English explanation of Big O¿Por qué está ordenando una cadena O (n log n)?

En la respuesta a un rompecabezas de programación que dijo ordenar una serie toma O (n log n) tiempo. ¿Cómo se deriva eso?

¿Alguien tiene un buen enlace de referencia para los recursos de Big O?

Gracias

+0

¿Qué significa 'ordenar una cuerda'? ¿Te refieres a ordenar una lista de cadenas? – jjnguy

+0

O tal vez ordenar caracteres en una cadena. –

+1

Sus caracteres de clasificación en una cadena. Sé lo grande que es O, no sé en particular por qué clasificar los caracteres en una cadena es n log n. –

Respuesta

10

¿Por qué está ordenando una cadena O (n log n)?

La clasificación de los caracteres en una cadena no es necesariamente O (n log n).

  • O (n log n) es la óptimo valor para un comparison sort. También es la complejidad de la implementación de clasificación predeterminada de muchos idiomas. Sin embargo, es ciertamente posible hacerlo peor que esto. La complejidad de ordenar los caracteres en una cadena depende del algoritmo específico que elija para resolver esta tarea.
  • También es posible hacerlo mejor que O (n log n) en algunos casos utilizando un algoritmo de ordenación que no es una clasificación de comparación. Por ejemplo, si sabe que tiene una cadena ASCII con un máximo de 127 caracteres distintos, puede usar un counting sort que es O (n). Un tipo de conteo también sería factible para cadenas Unicode donde todos los caracteres están en el Basic Multilingual Plane.
Cuestiones relacionadas