中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

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

2021-01-30    分類: 網站建設

堆是我們一個常用的數據結構,堆是一個完全二叉樹,下圖是一個小根堆,小根堆的意思是對于樹里面的所有節點,都是父節點小于任何一個子節點,今天創新互聯來看一下Go中是怎么實現堆?



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



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



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



接下來則是堆里面的push操作,先是調用了你實現的往末尾添加一個元素的接口,然后執行up操作,維護小根堆。up操作的目的是為了保證小根堆里面每一個結點都比子節點小。



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

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

本文名稱:Go語言中怎么實現一個小根堆,Java程序員表示看懵了
瀏覽路徑:http://www.2m8n56k.cn/news/98144.html

成都網站建設公司_創新互聯,為您提供網站改版、ChatGPT、手機網站建設、虛擬主機、自適應網站、網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 国产精品人成 | 国产日韩在线播放 | 男人的天堂精品国产一区 | 欧美成人一区二区 | 久久五月女厕所一区二区 | 国产亚洲精品成人a在线 | 九九九九在线视频播放 | 亚洲日韩中文字幕在线播放 | 步兵精品手机在线观看 | 国产乱码精品一区二区三区卡 | 成年大片免费视频播放二级 | 婷婷在线成人免费观看搜索 | 欧美日本一区 | 中文字幕乱码在线观看 | 国内精品久久久久影院免费 | 精品视频在线观看一区二区三区 | 国产精品久久久久久久久久一区 | 亚洲欧美日韩在线精品一区二区 | 久久欧美精品 | 一级毛片在线播放 | 欧美成人免费观看的 | 成人国产精品一级毛片了 | 中国一级做a爰片久久毛片 中日韩欧美一级毛片 | 久久成人免费观看全部免费 | 亚洲欧美综合网 | 成人免费观看高清在线毛片 | 久久99精品久久久久久国产越南 | 欧美日韩一区二区三区免费 | 大胆gogo999亚洲肉体艺术 | 亚洲成a人片在线观看中文 亚洲成a人片在线观看中文!!! | 亚洲综合91社区精品福利 | 香蕉成人在线 | 欧美日韩精品一区二区免费看 | 久久草在线 | 亚洲视频在线观看网站 | 97视频免费公开成人福利 | 欧美色综合高清视频在线 | 99久久99视频 | 九九99九九在线精品视频 | 国产亚洲人成在线影院 | 欧美人成在线 |