Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何转换具有0(n log k)的数组?_Algorithm_Converter - Fatal编程技术网

Algorithm 如何转换具有0(n log k)的数组?

Algorithm 如何转换具有0(n log k)的数组?,algorithm,converter,Algorithm,Converter,输入:由n个整数和k个值(k组成的数组A除了数组外,还保持一个最大堆,其中包含迄今为止看到的k个最小元素 然后从左向右扫描数组,如果数组中的当前元素小于堆中最顶端的元素,则删除最顶端的元素并插入此新元素(在log(k)time中) 数组B应在每一步由堆中最顶端的元素填充 在您的示例中,最初堆是空的 扫描2。堆包含2,B[1]=0 扫描-3。堆现在是: ..2 -3 B[2]=0 扫描5.堆现在为: …5 -3.2 B[3]=5 扫描1。堆现在为: …2 -31 B[4]=2. 等等 谢谢你编辑它

输入:由n个整数和k个值(k组成的数组A除了数组外,还保持一个最大堆,其中包含迄今为止看到的k个最小元素

然后从左向右扫描数组,如果数组中的当前元素小于堆中最顶端的元素,则删除最顶端的元素并插入此新元素(在log(k)time中)

数组B应在每一步由堆中最顶端的元素填充

在您的示例中,最初堆是空的

  • 扫描2。堆包含2,B[1]=0
  • 扫描-3。堆现在是:
    ..2
    -3
    B[2]=0
  • 扫描5.堆现在为:
    …5
    -3.2
    B[3]=5
  • 扫描1。堆现在为:
    …2
    -31
    B[4]=2.
    等等

  • 谢谢你编辑它以显示隐藏文本Harold你能更精确地定义数组B吗?我怀疑这应该有一个副本,但我找不到它。示例[0,0,-3,-3,-3]中的B不应该吗?@csbalazs:不,给出的数组B是正确的。它包含了迄今为止看到的第k个最小的数字。这看起来是我需要的。非常感谢。爱你们haha@Adam如果这回答了您的问题,请随意将其标记为正确。
    B[i]{ if i<k = 0 
          else k-th smallest number of A[1...i]
    
    A: 2 -3 5 1 6
    k=3
    B: 0 0 5 2 2