zoukankan      html  css  js  c++  java
  • 堆排序的应用优先级队列

    优先级队列是一种用来维护一组元素构成的集合S的数据结构,这一组元素中的每一个都有

    一个关键字key。一个最大优先级队列支持以下操作:

    INSERT(S, x): 把元素x插入集合S

    MAXIMUM(S): 返回S中具有最大关键字的元素

    EXTRACT-MAX(S): 去掉并返回S中得具有最大关键字的元素

    INCREASE-KEY(S, x, k): 将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值

    HEAP-MAXIMUM(A)
      return A[1]
    HEAP-EXTRACT-MAX(A)
      if heap-size[A] < 1
        then error "heap underflow"
      max ← A[1]
      A[1] ← A[heap-size[A]]
      heap-size[A] ←heap-size[A] - 1
      MAX-HEAPIFY(A, 1)
      return max
    HEAP-INCREASE-KEY(A, i, key)
      if key < A[i]
        then error "new key is smaller than current key"
      A[i] ← key
      while i > 1 and A[PARENT(i)] < A[i]
        do exchange A[i] ↔ A[PARENT(i)]
          i ← PARENT(i)
    MAX-HEAP-INSERT(A, key)
      heap-size[A] ← heap-size[A] + 1
      A[heap-size[A]] ← -∞
      HEAP-INCREASE-KEY(A, heap-size[A], key)
  • 相关阅读:
    GitLab配置SSH密钥
    axios访问本地模拟的json数据
    ODAC Windows 安装
    Linux tar命令
    Oracle INSTR使用
    js map方法的使用
    SessionState的几种设置
    C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
    Linux给用户添加sudo权限
    Linux 学习整理
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2485981.html
Copyright © 2011-2022 走看看