zoukankan      html  css  js  c++  java
  • [Algorithm] How to use Max Heap to maintain K smallest items

    Let's say we are given an array:

    [4,1,5,2,3,0,10]

    We want to get K = 3 smallest items from the array and using Max heap data structure.

    So this is how to think about it.

    1. We take first K items put it into Max Heap:

         5

      /     

    4          1

    2. Then we move forward to next element '2' in the array, we check

    • Whether 2 is smaller than current max item in heap, which is '5', if yes, then replace 5 with 2
    • Then re-arrange the heap

         4

       /            

     2         1

    3. Repeat the process for items [3,0]

         3        2

       /                       /  

     2         1              0    1

    4. When the item is '10' which is larger than current max '2', we just ingore it.

    5. In the end, we got K smallest items, we just need to print it out. (K smallest items are not ncessary in order)

  • 相关阅读:
    斐波那契数列的递归和非递归实现
    二叉树遍历
    基础总结
    内部类
    I/O dempo
    读取文件注意事项
    eclipse 主题设置
    String 常用函数
    多态的理解
    ffmpeg处理RTMP流媒体的命令大全
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10480327.html
Copyright © 2011-2022 走看看