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

商店网站源码制作英文

商店网站源码,制作英文,江苏省网站备案电话号码,网页升级访问永久优先队列 API初级实现使用堆实现由下至上的堆有序化(上浮)由上至下的堆有序化(下沉)插入和删除元素具体实现 很多情况下我们需要有序的处理输入的元素,但是又不需要输入的元素全部有序,或者不需要一次将它们…

优先队列

      • API
      • 初级实现
      • 使用堆实现
        • 由下至上的堆有序化(上浮)
        • 由上至下的堆有序化(下沉)
        • 插入和删除元素
        • 具体实现

很多情况下我们需要有序的处理输入的元素,但是又不需要输入的元素全部有序,或者不需要一次将它们排序出来。还有的情况的输入的元素不是一次性给出的,需要我们根据需要实时获取最大值或者最小值。这时候我们就可以使用优先队列实现我饿们的需求。

API

public class MaxPQ <Key extends Comparable<Key>>
MaxPQ()创建一个优先队列
MaxPQ(int max)创建一个初始容量为max的优先队列
MaxPQ(Key[] a)用a[]中的元素创建一个优先队列
void insert(Key v)向优先队列中插入一个元素
Key max()返回最大元素
Key delMax()删除返回最大元素
boolean isEmpty()返回队列是否为空
int size()返回优先队列中元素个数

初级实现

初级实现是使用一个数组或者链表,在插入时或者获取最大元素动态维护数组或者链表的有序性并使得调用对应获取最大值的API能正确获取结果。

使用堆实现

当一棵二叉树的每个结点都大于等于它的两个子节点时,它被称为堆有序。根节点是堆有序的二叉树中的最大结点。二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级存储(不使用数组的第一个位置)

由下至上的堆有序化(上浮)

如果堆有序的状态因为某个节点变得比它的父节点更大而被打破,那么我们就需要通过交换它和它的父节点来修复堆。交换后,这个节点比它的两个子节点都打,但这个节点仍然可能比它现在的父节点更大。我们可以一遍遍地使用同样地办法恢复秩序,将这个节点不断向上移动直到我们遇到一个更大的父节点。

private void swim(int k) {while (k > 1 && less(k / 2, k)) {exch(k/2, k);k /= 2;}
}

由上至下的堆有序化(下沉)

如果堆有序状态因为某个结点变得比它的两个子节点或是其中之一更小而被打破了,那么我们可以通过将它和它的两个子节点中的较大者交换来恢复堆。交换可能会在子节点处继续打破堆的有序状态,因此我们需要不断地用相同的方式将其修复,将节点下移直到它的子节点都比它更小或者到达了堆的底部。

private void sink(int k) {while (2 * k <= N) {int j = 2 * k;if (j < n && less(j, j + 1)) ++j;if (!less(k, j)) break;exch(k, j);k = j;}
}

插入和删除元素

插入新元素:我们将新元素添加到数组末尾,增加堆的大小并让这个新元素上浮到合适的位置。
删除最大元素:我们将数组顶端删去最大的元素并将数组的最后一个元素放到顶端,减小堆的大小并让这个元素下沉到合适的位置。

具体实现

public class MaxPQ <Key extends Comparable<Key>> {private Key[] pq;private int N = 0;public MaxPQ(int maxN) {pq = (Key[]) new Comparable[maxN + 1];}public boolean isEmpty() {return N == 0;}public int size() {return N;}public void insert(Key v) {pq[++N] = v;swim(N);}public Key delMax() {Key max = pq[1];exch(1, N--);pq[N + 1] = null;sink(1);return max;}private boolean less(int i, int j)private void exch(int i, int j)private void swim(int k)private void sink(int k)
}

对于一个含有N个元素的基于堆的优先队列,插入元素操作只需不超过(logN + 1)次比较,删除最大元素的操作需要不超过2logN次比较

http://www.yayakq.cn/news/733022/

相关文章:

  • 建设部网站如何登录监理工程师wordpress建站云盘
  • 什么网站做家具外贸好呢电商设计图
  • 帮客户做网站内容宁德seo公司
  • 网站流量下降wordpress 云落git最新版
  • 加盟招商网站建设方案通用网站建设
  • 宁波网站制作哪家全面手机系统优化软件哪个好
  • 面备案网站建设wordpress主题支持分页
  • 找装修工人的平台或app优化网站快速排名软件
  • 刷东西的网站自己做一键优化下载
  • 备案主体负责人 网站负责人淄博企业网站建设哪家专业
  • 南昌网站优化wordpress跳转指定模板
  • 青岛正规网站建设哪家好一个网站有哪几种漏洞
  • 安居客房产官方网站爱站seo工具包官网
  • 小清新wordpress主题南昌seo技术外包
  • 大同市建设工程质量监督站网站淮南家居网站建设怎么样
  • 泉州网站设计公司优秀的国外网站设计网站
  • 做律师网站的网络公司工业和信息化部网站备案
  • 珠海建设工程监督站网站网站开发用的软件
  • 个性化网站定制成都网站营销
  • 请教 网站建设价格一般多少钱上海建筑业服务平台
  • 青岛企业网站制作哪家好青岛栈桥导游词
  • 中山网站建设制作 超凡科技哪些外贸网站可以做soho
  • 图片制作在线生成器免费版网站建设优化服务策划
  • 公司做网站需要什么内容昌都网站建设
  • 河南新乡市建设银行网站建筑类网站建设
  • 网站seo优化心得wordpress怎么添加虚拟浏览量
  • 学校门户网站建设必要性兰州网站网站建设
  • 网站首页tdk怎么做物流公司网站开发与淘宝对接 在淘宝卖家中心显示物流信息
  • 深圳高端网站建设报价西安凤城二路网站建设
  • 绍兴网站制作软件中国机床行业