欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++并查集怎么實現(xiàn)-創(chuàng)新互聯(lián)

這篇文章主要介紹“C++并查集怎么實現(xiàn)”,在日常操作中,相信很多人在C++并查集怎么實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++并查集怎么實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)六安免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

并查集 是一種樹型的數(shù)據(jù)結構,用于處理一些不相加集合的合并和查詢問題。在使用中常常以森林來表示。 并查集也是用來維護集合的,和前面學習的set不同之處在于,并查集能很方便地同時維護很多集合。如果用set來維護會非常的麻煩。并查集的核心思想是記錄每個結點的父親結點是哪個結點。

前言

并查集是一種多叉樹,用于處理不相交的集合的合并與查詢問題(判斷)。

通俗理解:在日常生活中,我們會因為某個人是自己的朋友,哪怕是朋友的朋友也是有朋友,會給予通融、 偏袒。而并查集的基本概念,就是判斷某兩個集合是否是“朋友”關系,并讓兩個集合成為“朋友”

常用操作

初始化:每個結點單獨作為一個集合

查詢:求元素所在的集合的代表元素,即根結點

合并:將兩個元素所在的集合,合并為一個集合

合并之前,應先判斷兩個元素是否屬于同一集合,用上面的“查詢”來實現(xiàn)

算法實現(xiàn)

初始化:初始的時候每個結點各自為一個集合,father[i]表示結點 i 的父親結點,如果 father[i]=i,我們認為這個結點是當前集合根結點(開始時每個節(jié)點根節(jié)點是他自己)。

void init() {

    for (int i = 1; i <= n; ++i) {

        father[i] = i;

    }

}

查找:查找結點所在集合的根結點,結點 x 的根結點必然也是其父親結點的根結點(像是有遞歸的樣子)。

int get(int x) {

    if (father[x] == x) { // x 結點就是根結點

        return x; 

    }

    return get(father[x]); // 如果該節(jié)點不是根節(jié)點,繼續(xù)尋找父結點的根結點

}

合并:將兩個元素所在的集合合并在一起,通常來說,合并之前先判斷兩個元素是否屬于同一集合。

void hebing(int x, int y) {

    x = find(x);

    y = find(y);

    if (x != y) { // 不在同一個集合

        father[y] = x;//將根節(jié)點合并

    }

}

上面三個操作是并查集常用的操作

前面的并查集的復雜度實際上在有些極端情況會很慢。比如樹的結構正好是一條鏈,那么最壞情況下,每次查詢的復雜度達到了O(n) 。這并不是我們期望的結果。路徑壓縮的思想是,我們只關心每個結點的父結點,而并不太關心樹的真正的結構(遞歸查找相當浪費時間)如下:

C++并查集怎么實現(xiàn)

當想去訪問6的根節(jié)點時,要訪問5的根節(jié)點,想去訪問5的根節(jié)點,又要去訪問4的根節(jié)點..........以此類推,此時并查集退化為線性。

這樣我們在一次查詢的時候,可以把查詢路徑上的所有結點的father[i]都賦值成為根結點。只需要在我們之前的查詢函數(shù)上面進行很小的改動

int findf(int k)
{     if(f[k] == k) 
        return k;     
        return f[k] = findf(f[k]); //后來更新的點的根節(jié)點直接為最開始的點,一步找到總根節(jié)點。
}

到此,關于“C++并查集怎么實現(xiàn)”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

標題名稱:C++并查集怎么實現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://aaarwkj.com/article24/dgoeje.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)企業(yè)網(wǎng)站制作、電子商務、品牌網(wǎng)站建設定制網(wǎng)站、網(wǎng)站建設

廣告

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

成都網(wǎng)頁設計公司
国模在线视频一区二区| 国产亚洲欧美精品久久久久| 欧美午夜一级特黄大片 | 久久精品亚洲欧美激情| 欧美精品亚洲精品日韩| 99热在线免费观看精品| 丁香婷婷麻豆激情综合网| 快播av手机在线播放| 性感美女国产av一区二区三区| 亚洲av成人三区国产精品| 日本美女阴部毛茸茸视频| 亚洲天堂av福利在线观看| 久久人妻制服乱码中文字幕| 熟妇一区二区在线播放| 亚洲精品一二三区免费| 亚洲av偷拍一区二区三区不卡| 毛片精品一区二区二区三区| 欧美精品青青久久久久久| 日韩一区二区三区91| 好吊视频在线免费观看| 久久精品国产av一一区| 欧美色视频综合在线观看| 日日夜夜久久国产精品 | 日韩毛片中文字幕在线观看| 日韩欧美亚洲视频另类| 亚洲二区三区四区在线| 亚洲欧洲精品专线九九| 日本国产一区二区三区在线观看| 国产91高清视频在线观看| 人妻巨乳一区二区三区| 九九热精品视频美谷朱里| 黄片免费在线播放欧美| 日韩丰满少妇在线观看| 91最新精品丝袜国产在线| 久久国内午夜福利直播| 日本在线一区二区不卡视频 | 末满18周岁禁止观看| 国产精品麻豆色哟哟av| 久草尤物视频在线观看| av中文字幕一区二区三区| 亚洲成人日韩国产欧美|