La respuesta corta es que [math] n / 2 \ log (n / 2) [/ math] es de orden [math] O (n \ log n) [/ math]. El factor constante no hace una diferencia en el análisis asintótico.
Probablemente estés viendo código como este:
CONSTRUIR-MAX-HEAP
heap-size = length (A)
para i = \ l longitud del piso (A) / 2 \ r piso abajo 1
MaxHeapify (A, i)
- ¿Hay alguna investigación con la función sub modular y la selección de características en el aprendizaje automático?
- ¿Cómo se puede dividir un conjunto de números en dos subconjuntos de modo que el XOR de los elementos en un subconjunto sea igual al XOR de los elementos en el otro y sea lo más grande posible?
- ¿Cuál es el problema más interesante que ha encontrado y que utiliza la recursividad?
- ¿Cómo se puede usar la función zeta de Riemann para generar números pseudoaleatorios?
- ¿En qué secuencia se debe aprender la estructura de datos, el algoritmo y las matemáticas discretas?
Fuente: http://www.cs.toronto.edu/~krueg…
MaxHeapify
toma como máximo [math] \ log n [/ math] tiempo. Ejecutarlo [math] n / 2 [/ math] veces proporciona una estimación de [math] n / 2 \ log n [/ math] con is [math] O (n \ log n) [/ math]. No tiene sentido mantener el [math] 1/2 [/ math] porque el tiempo “[math] \ log n [/ math]” no tiene unidades o factores constantes asociados, lo que podría empequeñecer cualquier factor constante de [ matemática] 1/2 [/ matemática] aplicada al bucle exterior.
Pero … también debería estar aprendiendo que BUILD-MAX-HEAP tiene un límite más estricto, es decir, [math] O (n) [/ math]. Consulte Insertar un elemento en un montón toma O (log n). ¿Aún si insertamos n elementos en el montón, resulta ser O (n)? o ¿Alguien puede dar una prueba intuitiva del tiempo de ejecución del proceso de almacenamiento dinámico en O (n)? o ¿Por qué el tiempo de ejecución de construir un montón binario O (n) y no O (n * log n)?