当前位置: 首页 > wzjs >正文

社区网站怎么做微信小程序广告投放

社区网站怎么做,微信小程序广告投放,广州手机模板建站,网站对联广告html代码Java中优先级队列的实现 Java中的优先级队列是通过PriorityQueue类实现的,它是基于**优先级堆(通常是最小堆)**的数据结构。下面详细解析其实现机制: 核心实现原理 底层数据结构: 使用数组(Object[] queu…

Java中优先级队列的实现

Java中的优先级队列是通过PriorityQueue类实现的,它是基于**优先级堆(通常是最小堆)**的数据结构。下面详细解析其实现机制:

核心实现原理

  1. 底层数据结构

    • 使用数组Object[] queue)存储元素
    • 逻辑上组织为二叉堆(默认是最小堆)
  2. 堆的性质维护

    • 父节点总是小于或等于子节点(最小堆)
    • 插入和删除操作后通过"上浮"和"下沉"操作维护堆性质

关键操作实现

1. 插入元素(add/offer)

public boolean offer(E e) {if (e == null)throw new NullPointerException();modCount++;int i = size;if (i >= queue.length)grow(i + 1);  // 动态扩容siftUp(i, e);     // 上浮操作size = i + 1;return true;
}

上浮过程(siftUp):

private void siftUp(int k, E x) {if (comparator != null)siftUpUsingComparator(k, x);elsesiftUpComparable(k, x);
}private void siftUpComparable(int k, E x) {Comparable<? super E> key = (Comparable<? super E>) x;while (k > 0) {int parent = (k - 1) >>> 1;  // 计算父节点位置Object e = queue[parent];if (key.compareTo((E) e) >= 0)break;queue[k] = e;  // 父节点下移k = parent;}queue[k] = key;  // 找到最终位置
}

2. 删除元素(poll/remove)

public E poll() {if (size == 0)return null;int s = --size;modCount++;E result = (E) queue[0];E x = (E) queue[s];queue[s] = null;if (s != 0)siftDown(0, x);  // 下沉操作return result;
}

下沉过程(siftDown):

private void siftDown(int k, E x) {if (comparator != null)siftDownUsingComparator(k, x);elsesiftDownComparable(k, x);
}private void siftDownComparable(int k, E x) {Comparable<? super E> key = (Comparable<? super E>)x;int half = size >>> 1;        // 只需检查非叶子节点while (k < half) {int child = (k << 1) + 1; // 左子节点Object c = queue[child];int right = child + 1;if (right < size &&((Comparable<? super E>) c).compareTo((E) queue[right]) > 0)c = queue[child = right]; // 选择较小的子节点if (key.compareTo((E) c) <= 0)break;queue[k] = c;  // 子节点上移k = child;}queue[k] = key;  // 找到最终位置
}

重要特性

  1. 动态扩容

    • 初始容量为11
    • 扩容策略:小队列(<64)时双倍扩容,大队列时增长50%
  2. 排序方式

    • 默认自然顺序(最小堆)
    • 可通过Comparator自定义优先级顺序
  3. 非线程安全

    • 线程安全版本使用PriorityBlockingQueue
  4. 时间复杂度

    • 插入/删除:O(log n)
    • 查看队首:O(1)

使用示例

// 默认最小堆
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
minHeap.offer(5);
minHeap.offer(1);
minHeap.offer(3);
System.out.println(minHeap.poll()); // 输出1// 自定义比较器实现最大堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);
maxHeap.offer(5);
maxHeap.offer(1);
maxHeap.offer(3);
System.out.println(maxHeap.poll()); // 输出5

Java的优先级队列实现高效且灵活,能够满足大多数需要优先级调度的应用场景。


文章转载自:

http://cbEGvKYi.kyfrL.cn
http://3G5eN2ua.kyfrL.cn
http://OFu0xzv3.kyfrL.cn
http://9mHv9U5k.kyfrL.cn
http://RWgw4F2E.kyfrL.cn
http://1aU9BJS3.kyfrL.cn
http://tHUeScF4.kyfrL.cn
http://E4wTt6MH.kyfrL.cn
http://1VxZyF2Z.kyfrL.cn
http://GnFyU0Sx.kyfrL.cn
http://tNFllnt9.kyfrL.cn
http://q1oRng3B.kyfrL.cn
http://aPOfPVJd.kyfrL.cn
http://xq98qrXM.kyfrL.cn
http://x83b93dU.kyfrL.cn
http://3yx7NlTt.kyfrL.cn
http://v6J2Fpr4.kyfrL.cn
http://4esUUWlL.kyfrL.cn
http://0lvxwQ9N.kyfrL.cn
http://jyRSyAcZ.kyfrL.cn
http://GFprEokn.kyfrL.cn
http://ugX2BPXz.kyfrL.cn
http://p0cPJr85.kyfrL.cn
http://GWKiXU31.kyfrL.cn
http://W1vvklrC.kyfrL.cn
http://iLrq3j8V.kyfrL.cn
http://EW65PCrf.kyfrL.cn
http://yaJ9E3hx.kyfrL.cn
http://rOSEHF2g.kyfrL.cn
http://L2esGuWK.kyfrL.cn
http://www.dtcms.com/wzjs/773680.html

相关文章:

  • 做百度快照要先有网站吗手机上如何开发软件
  • 网站做百度口碑设计构建网站
  • 南京网站建设 小程序大连承揽营销型网站公司
  • 网站推广洛阳app开发需要用到哪些工具
  • 电商网站建设价格低手机移动端网站是什么
  • 淄博外贸网站制作东莞保安
  • 教育培训网站建设方案做网站互联互通
  • php网站作业模版网络专业毕业设计
  • 淄博网站建设报价网站代码在哪里写
  • 辽阳低价网站建设公司wordpress建两个网站
  • 网站怎么做动态图seo诊断工具
  • django做网站比较容易wordpress迁移打不开
  • 网站建设服务费是否无形资产宁夏做网站的公司
  • 网站建设的主要观点百度云网盘资源搜索引擎入口
  • 网站收录查询站长工具网站建设辶金手指排名十二
  • 成都做企业网站商城网站建设课设
  • 包头有没有专业做淘宝网站的个人建网站一般多少钱
  • 中企动力网站合同自己做装修网站需要多少钱
  • 东莞怎么制作网站广西建设教育网官网
  • 厦门规划建设网站资源收费网站怎么做
  • 家具网站开发设计任务书手机网站建站系统
  • 恋爱ppt模板免费下载网站黄骅市网站建设价格
  • 房地产网站建设案例网络广告策略有哪些
  • 温州网站建设免费咨询如何在导航网站上做链接
  • 成都学校网站建珠宝 网站欣赏
  • 手机wap网站免费建站网站制作公司哪家专业
  • 开发板停止维护后如何处理网站文字很少怎么做优化
  • 北京时间网站建设在线crm系统
  • 公司网站设计怎么做国际本科
  • 某网站的安全建设方案学做网站视频教程