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)

  • 相关阅读:
    meta属性
    博客
    概念术语
    装饰器与生成器
    Linux基础
    线程
    网络编程之socket
    网络编程之网络基础部分

    内置函数(max,min,zip)及文件处理
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10480327.html
Copyright © 2011-2022 走看看