• [算法] 优先队列


    普通队列:先入先出

    优先队列:依照元素优先级的大小取出数据

    现实世界中,许多情况是可以插队的(根据权重)

    应用:

    游戏中AI优先攻击哪个敌人(根据经验高低、血多少等)

    操作系统处理应用

    在第N个元素中选出前M个元素

    使用排序可在O(NlogN)内解决

    使用优先队列可在O(NlogM)内解决(N和M相差越大优化越明显)

    快速获取Top10最热门的搜索关键词(Top K问题)

    求中位数

    用不同的数据结构实现优先队列:

    普通数组,入队O(1),出队O(n)

    顺序数组,入队O(n),出队O(1)

    堆的入队和出队的效率都是O(lgn)

    对于总共N个请求,普通数组或顺序数组,最差情况O(n^2),而堆是O(nlgn)

    堆是一种特殊的树,需满足:

    1)是一颗完全二叉树

    2)每个节点的值都必须大于等于(或小于等于)其子树中每个节点的值

  • 相关阅读:
    快速幂取模算法详解
    牛客网小白月赛5I区间(差分数组)
    多重背包模板
    hdu5791(DP)
    CodeForces
    最长上升子序列LIS(51nod1134)
    POJ1088(记忆搜索加dp)
    最长公共子序列LCS(POJ1458)
    Gym 100971J-Robots at Warehouse
    模板
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12142928.html
Copyright © 2020-2023  润新知