欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Go語言中怎么實現(xiàn)一個小根堆,Java程序員表示看懵了

2021-01-30    分類: 網(wǎng)站建設(shè)

堆是我們一個常用的數(shù)據(jù)結(jié)構(gòu),堆是一個完全二叉樹,下圖是一個小根堆,小根堆的意思是對于樹里面的所有節(jié)點,都是父節(jié)點小于任何一個子節(jié)點,今天創(chuàng)新互聯(lián)來看一下Go中是怎么實現(xiàn)堆?



下面是Go語言中實現(xiàn)一個堆的代碼,對于每一個堆,我們都需要實現(xiàn)5個方法,這點感覺比Java的優(yōu)先隊列要復(fù)雜得多了,分別是Len,用來計算容器得長度,Less返回兩個元素得大小關(guān)系,Swap,用來交換兩個數(shù)據(jù)。這幾個實際上都是用來實現(xiàn)sort接口的。接下來,我們需要實現(xiàn)Push跟Pop方法,對于一個以前不是寫Go語言的人,可能覺得這個實現(xiàn)其實很冗余,Push方法我們要做的就是往數(shù)據(jù)結(jié)構(gòu)的最后面插入一個元素,而Pop則是彈出一個元素,彈出元素則是簡單的把最后一個元素取出來。小根堆不是最前面的元素才是最小的么?為什么是取最后一個元素?



我們看一下go語言中,heap的源碼,堆需要你實現(xiàn)Push跟Pop接口,因為繼承了sort接口,所以又要實現(xiàn)上面3個比較方法。



下面則是sort的接口,要求你實現(xiàn)長度,小于跟交換。



接下來則是堆里面的push操作,先是調(diào)用了你實現(xiàn)的往末尾添加一個元素的接口,然后執(zhí)行up操作,維護(hù)小根堆。up操作的目的是為了保證小根堆里面每一個結(jié)點都比子節(jié)點小。



剛剛我們提出一個疑問,小根堆不是最前面的元素才最小么?這里堆里面的Pop方法是先把最小的元素放到最后面,然后再來維護(hù)這個長度減一的小根堆。所以實際上你上面執(zhí)行方法的時候,最后一個元素才是最小的!

這里不由感嘆,還是Java的PriorityQueue封裝的好,使用起來更加方便。雖然很多人特別推崇Go,但我覺得每種語言都有各自的優(yōu)點缺點,都說Go寫起來很方便,這不,還是Java大法好。

本文名稱:Go語言中怎么實現(xiàn)一個小根堆,Java程序員表示看懵了
瀏覽路徑:http://chinadenli.net/news/98144.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版ChatGPT、手機網(wǎng)站建設(shè)、虛擬主機、自適應(yīng)網(wǎng)站網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
亚洲成人黄色一级大片| 欧美日韩免费黄片观看| 国产一区二区三区草莓av| 九九九热在线免费视频| 国产盗摄精品一区二区视频| 日本不卡在线视频你懂的| 91爽人人爽人人插人人爽| 欧美精品女同一区二区| 中国少妇精品偷拍视频| 亚洲精选91福利在线观看| 69精品一区二区蜜桃视频| 一区二区三区在线不卡免费| 香蕉久久夜色精品国产尤物| 精品国自产拍天天青青草原| 亚洲天堂精品一区二区| 99久久无色码中文字幕免费| 激情内射日本一区二区三区| 日本黄色录像韩国黄色录像| 欧美韩日在线观看一区| 国产精品香蕉在线的人| 两性色午夜天堂免费视频| 国产午夜在线精品视频| 激情五月综五月综合网| 成人午夜视频在线播放| 91精品欧美综合在ⅹ| 日韩人妻少妇一区二区| 正在播放国产又粗又长| 加勒比东京热拍拍一区二区| 黄片美女在线免费观看| 精品老司机视频在线观看| 午夜视频成人在线免费| 少妇淫真视频一区二区| 欧美色婷婷综合狠狠爱| 日韩特级黄片免费观看| 国产原创中文av在线播放| 内用黄老外示儒术出处| 东京热电东京热一区二区三区| 亚洲一区二区三区国产| 大尺度剧情国产在线视频| 国产亚洲欧美日韩精品一区| 亚洲综合精品天堂夜夜|