La construcción de montón en O (N) en java en lugar de O (NlogN)

Zephyr:

Para construir montón, utilizamos la clase PriorityQueue en Java. ¿Hay una manera usando incorporado biblioteca / clase para construir montón directamente de una matriz en O (N) en lugar de empujar cada elemento individualmente para construir montón en O (NlogN)?

el otro tipo:

Utilice el constructor que toma una colección :

new PriorityQueue<String>(Arrays.asList(yourArray));

Como era de esperar, los Documentos de Java no mencionan nada acerca de la complejidad, pero al leer el código fuente muestra que el OpenJDK utiliza el típico O(n)enfoque heapify en vez de insertar en un bucle:

private void initFromCollection(Collection<? extends E> c) {
    initElementsFromCollection(c);
    heapify();
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=336485&siteId=1
Recomendado
Clasificación