zoukankan      html  css  js  c++  java
  • [算法] 优先队列

    普通队列:先入先出

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

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

    应用:

    游戏中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)每个节点的值都必须大于等于(或小于等于)其子树中每个节点的值

  • 相关阅读:
    三目运算符和逗号表达式
    ++与--操作符
    位运算符
    逻辑运算符
    接续符
    单引号和双引号
    注释分析
    enum,sizeof,typedef
    TERADATA数据库操作
    利用Spring的AbstractRoutingDataSource解决多数据源的问题
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12142928.html
Copyright © 2011-2022 走看看