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)
  • 相关阅读:
    五种Sublime text 3同时快速编辑多行内容
    update 更新某个字段自动加1
    oracle 一行记录被锁
    事件
    练习题1
    语法
    开始js
    js简述
    概述
    软连接
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2485981.html
Copyright © 2011-2022 走看看