日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

打印N个数组整体最大的TopK

發(fā)布時(shí)間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打印N个数组整体最大的TopK 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:

  有N個(gè)長度不一的數(shù)組,所有的數(shù)組都是有序的,請從大到小打印這個(gè)N個(gè)數(shù)組整體最大的前K個(gè)數(shù)。?
  例如,輸入含有N行元素的二維數(shù)組可以代表N個(gè)一維數(shù)組。?
  219, 405, 538, 845, 971?
  148, 558?
  52, 99, 348, 691?
  再輸入整數(shù)k = 5,則打印:?
  971, 845, 691, 558, 538

要求:

如果所有數(shù)組的元素個(gè)數(shù)小于K,則從大到小打印所有的數(shù)
要求時(shí)間復(fù)雜度為O(KlogN)


基本思路:

  本題的解法是利用堆結(jié)構(gòu)和堆排序的過程完成的,具體過程如下:

構(gòu)建一個(gè)大小為N的大根堆,建堆的過程就是把每一個(gè)數(shù)組的最后一個(gè)值,也就是該數(shù)組的最大值,依次加入到堆里,這個(gè)過程就是建堆的調(diào)整過程。

建好堆以后,此時(shí)堆頂?shù)脑鼐褪撬袛?shù)組中最大的元素,打印堆頂元素。

假設(shè)堆頂?shù)脑貋碜?a 數(shù)組的 i 位置,那么將堆頂?shù)脑赜胊[i-1]替換,然后從堆的頭部重新調(diào)整堆。如果發(fā)現(xiàn)此時(shí) a 數(shù)組已經(jīng)沒有元素,那么就將堆頂元素與堆尾元素交換,同時(shí)令堆的大小減1,仍然是從堆的頭部重新調(diào)整堆。

每次都可得到一個(gè)堆頂元素,打印k個(gè)堆頂元素,就是最終的結(jié)果。
?

class Heap:def __init__(self,value,arrNum,index):self.value = valueself.arrNum = arrNumself.index = indexdef printTopk(matrix,k):if matrix == None or len(matrix) == 0:return NoneheapSize = len(matrix)heap = [0 for i in range(heapSize)]for i in range(len(heap)):heap[i] = Heap(matrix[i][index],i,len(heap[i])-1)heapInsert(heap,i)print("Tok " + str(k) + " : ")for i in range(k):if heapSize == 0:breakprint(heap[0].value + " ")if heap[0].index!=0:heap[0].value = matrix[heap[0].arrNum][heap[0].index-1]heap[0].index -=1else:heap[0] = heap[-1]heapSize -= 1heapify(heap,0,heapSize)def heapInsert(heap,index):while parent!=0:parent = int((index-1)/2)if heap[index].value > heap[parent].value:swap(heap,index,parent)index = parentelse:breakdef heapify(heap,index,heapSize):left = 2 * index +1right = 2 * index + 2largest = indexwhile left < heapSize:if heap[left].value > heap[largest].value:largest = leftif right < heapSize and heap[right].value > heap[largest].value:largest = rightif largest != index:swap(heap,largest,index)else:breakindex = largestleft = 2 * index + 1right = 2 * index + 2def swap(heap,index1,index2):tmp = heap[index1]heap[index1] = heap[index2]heap[index2] = tmp

?

總結(jié)

以上是生活随笔為你收集整理的打印N个数组整体最大的TopK的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎影院色 | 国产免费色视频 | 91人人澡人人爽 | 人妻av一区二区 | 日本在线加勒比 | 五月激情啪啪 | 黄a在线 | 天天色综 | 色插综合 | 青青草毛片| 日韩精品免费一区二区在线观看 | 亚洲欧美一区二区三区在线观看 | 色999视频 | 成人影视免费观看 | 亚洲a∨无码无在线观看 | 中文字幕乱码亚洲精品一区 | 香蕉久久av | 国产精品不卡一区 | 天天cao在线| 亚洲无限观看 | 国产成人a亚洲精品 | 久久老司机精品视频 | 黄色在线播放视频 | 久久一二三区 | 亚洲精品一卡 | av激情影院 | 免费网站观看www在线观看 | www.国产精品 | 欧美三级小视频 | 欧美日韩在线免费播放 | 天堂精品在线 | 欧美不卡在线观看 | 日韩中文字幕视频在线观看 | 精品一区二区免费视频 | 高潮白浆| 高h放荡受浪受bl | 日韩国产亚洲欧美 | 亚洲av无码乱码国产精品 | 欧美操老女人 | 草草影院一区二区三区 | 99热精品在线播放 | 理论片一区| 亚洲精品乱码久久久久久国产主播 | 99国产精品人妻噜啊噜 | 波多野结衣中文字幕一区二区三区 | 欧美一区二区在线观看 | 天天色综合色 | 中文字幕免费av | 欧美中文字幕在线视频 | 美国黄色一级大片 | 国产 一二三四五六 | 男女做那个视频 | 影音先锋在线看片资源 | 久久99精品国产.久久久久 | 香蕉网站在线 | 熟女高潮一区二区三区 | 欧美 日韩 国产 亚洲 色 | 嫩草av91 | 福利社午夜影院 | 久草香蕉视频 | 亚洲黄色在线播放 | 欧美日韩另类一区 | 日本乱子伦| 国产精品系列在线 | 日本一道在线 | 国产成a人亚洲精v品无码 | 国产精品久久久久国产a级 国产一区二区在线播放 | 国产精品1区2区3区4区 | 日本国产精品 | 九九黄色片| 色8久久| 欧美变态绿帽cuckold | 久久久一区二区三区 | 国产精品日韩精品 | 麻豆视频成人 | 国产精品一区二区无码免费看片 | 欧美精品一区视频 | 91网址在线 | 久艹在线| 国产精品无码一区二区三区在线看 | 久久99网| 一区二区三区在线电影 | 日本三级黄色大片 | 手机看片1024国产 | av中文字幕一区二区三区 | 国产婷婷色一区二区在线观看 | 波多在线视频 | 久久久激情网 | 亚洲精品888 | 粉嫩av一区二区三区免费观看 | 一本一道波多野结衣av黑人 | 亚洲第一天堂av | 草草浮力影院 | 日本色一区 | 亚洲最大黄色 | 国产手机在线观看 | 天天操天天操天天操 | 91大神视频在线播放 | 国产小视频免费观看 |