【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)汇总.docx

【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)汇总.docx

接着上一 Pa 说。就是如何建立这个堆呢。可以从空的堆开始,然后依次往 堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第 i 个元素的所用的时间是 O(logi),所以插入所有元素的整体时间复杂度是 O(NlogN),代码如下。 n=0; 1 for(i=1;i=m;i++) 2 { 3 n++; 4 h[ n]=a[ i]; // 5 或者写成 6 scanf(%d,h[ n]); 7 siftup(); } 其实我们还有更快得方法来建立堆。它是这样的。 直接把 99 、5 、36 、7 、22 、17 、46 、12 、2 、19 、25 、28 、1 和 92

文档评论(0)

1亿VIP精品文档

相关文档