今天終于終于終于把視頻看完了收恢,除了激動(dòng)之外就是平淡了武学,最近這幾個(gè)算法不知道是因?yàn)閳D的緣故,還是看的有點(diǎn)著急的緣故伦意,感覺掌握的都不是太好火窒,至少目前自己寫不出來。這個(gè)馬踏棋盤算法...

今天終于終于終于把視頻看完了收恢,除了激動(dòng)之外就是平淡了武学,最近這幾個(gè)算法不知道是因?yàn)閳D的緣故,還是看的有點(diǎn)著急的緣故伦意,感覺掌握的都不是太好火窒,至少目前自己寫不出來。這個(gè)馬踏棋盤算法...
弗洛伊德算法也是解決最短路徑問題驮肉,但是它求的是每一個(gè)頂點(diǎn)到各個(gè)頂點(diǎn)的最短路徑熏矿,思路大概是用了三層循環(huán),最外面的負(fù)責(zé)控制從哪個(gè)頂點(diǎn)出發(fā)离钝,然后里面兩個(gè)就是來判斷最短路徑的票编。當(dāng)然這...
怎么說吧,迪杰斯特拉算法是求最小路徑問題的卵渴,里面也用到了圖的廣度遍歷的思想慧域,其實(shí)感覺核心就是比較出發(fā)的點(diǎn)到其他點(diǎn)的最小距離,如果是最小就保存記錄下來浪读,然后再比較昔榴,如果碰到更小...
克魯斯卡爾算法就是選邊的文圖,選擇n-1條邊碘橘,思路基本還是直到了论泛,用代碼處理時(shí)有兩個(gè)要注意的,一個(gè)是要對(duì)邊進(jìn)行排序蛹屿,手寫一個(gè)排序算法就可以完成操作屁奏,另外一個(gè)是對(duì)于加入的邊要看...
普利姆算法構(gòu)建最小生成樹思想就是加入結(jié)點(diǎn),且是找權(quán)最小的結(jié)點(diǎn)错负,然后加入坟瓢,最后構(gòu)建成一個(gè)最小生成樹,首先需要?jiǎng)?chuàng)建一個(gè)圖類犹撒,然后再生成一個(gè)最小生成樹發(fā)鄰接矩陣折联,最后寫一個(gè)建立最小...
之前對(duì)貪心算法還是挺期待的,這次學(xué)了之后识颊,就感覺也沒啥诚镰,就是努力去找最優(yōu)解奕坟,但是目前來說要是自己去寫這個(gè)代碼,感覺自己寫不出來清笨,我發(fā)現(xiàn)這幾個(gè)算法都是別人的一種思想月杉,我現(xiàn)在只是...
動(dòng)態(tài)規(guī)劃問題,最經(jīng)典的就是背包問題抠艾,就是動(dòng)態(tài)的嘗試哪個(gè)方案可以在一定的重量條件下得到的價(jià)值量最大苛萎,我的理解就是弄了一個(gè)二維數(shù)組的圖標(biāo)=表,然后分別變動(dòng)一行检号,再去看每一列對(duì)應(yīng)額...
分治算法腌歉,拿漢諾塔來舉例,就是把復(fù)雜的問題分成簡單的問題來解決齐苛,算法的思路就是按照?qǐng)D上的三步來進(jìn)行翘盖,對(duì)于分治算法,關(guān)鍵是怎么分的問題凹蜂。
非遞歸就是在原來進(jìn)行遞歸的地方不采用遞歸了最仑,而是重新把left或right設(shè)置為mid-1或mid+1,其他都沒有變化,然后就不斷進(jìn)行查找炊甲,最后找到就是找到,沒找到就返回-1欲芹。
如果單純說思路的話其實(shí)很簡單卿啡,用java代碼來實(shí)現(xiàn)的話就要按照?qǐng)D上面的算法步驟,其實(shí)感覺自己來寫也挺不好寫的菱父,可能還是不熟練的原因吧颈娜。等日后用到,再鞏固鞏固吧浙宜。
圖主要是為了操作多對(duì)多關(guān)系的對(duì)象官辽,其他的概念基本都已經(jīng)掌握,這里就做一個(gè)記錄吧粟瞬,若干年后要是忘了可以回頭看看同仆。
B樹就是一種多叉樹俗批,主要是為了降低二叉樹的高度,B+樹是所有的關(guān)鍵字都位于葉子結(jié)點(diǎn)市怎,非葉子結(jié)點(diǎn)是稀疏索引岁忘,葉子結(jié)點(diǎn)即關(guān)鍵字又叫做稠密索引。B*樹對(duì)非葉子結(jié)點(diǎn)之間進(jìn)行關(guān)系綁定区匠,...
二叉排序樹簡單來說就是左子結(jié)點(diǎn)小于等于父結(jié)點(diǎn)干像,右子結(jié)點(diǎn)大于等于父結(jié)點(diǎn),創(chuàng)建二叉排序樹的時(shí)候就是比較要插入結(jié)點(diǎn)和當(dāng)前結(jié)點(diǎn)的關(guān)系若是插入結(jié)點(diǎn)小于當(dāng)前結(jié)點(diǎn)就向左若有結(jié)點(diǎn)繼續(xù)向左繼續(xù)...
平衡二叉樹又稱為avl樹是根據(jù)兩個(gè)發(fā)明者名字縮寫而來的,對(duì)二叉排序樹進(jìn)行平衡操作就是左旋轉(zhuǎn)還是右旋轉(zhuǎn)的問題麻汰,其中還有進(jìn)行一次旋轉(zhuǎn)解決不了問題的問題速客,這個(gè)時(shí)候就有進(jìn)行左右結(jié)合旋...
這一塊的內(nèi)容主要講的就是哈夫曼編碼和哈夫曼編碼的應(yīng)用,學(xué)起來也挺累的什乙,現(xiàn)在只是基本了解了哈夫曼編碼再文件壓縮和解壓的過程挽封,當(dāng)然自己手寫出來代碼還需要一定的深入了解才能寫出來。...
哈夫曼樹的思想差不多已經(jīng)知道了臣镣,無非是如果來用代碼實(shí)現(xiàn)還不太會(huì)辅愿,首先需要?jiǎng)?chuàng)建結(jié)點(diǎn)類,這里讓類去實(shí)現(xiàn)了一個(gè)Compare接口忆某,重新了CompareTo()方法点待,return t...
堆排序,總的來說就是構(gòu)建大頂堆或小頂堆弃舒,升序大頂堆癞埠,降序小頂堆。拿大頂堆來說聋呢,就是每次將最大的元素放入最頂端苗踪,然后再和數(shù)組最后一個(gè)元素進(jìn)行交換,交換之后削锰,最后一個(gè)元素就是最大...
對(duì)線索化二叉樹進(jìn)行遍歷后的結(jié)果還是對(duì)應(yīng)原來線索前的那個(gè)順序通铲,然后這個(gè)方法直接在線索化二叉樹類中寫方法就行,要按照原來線索化的順序?qū)懘a器贩,因?yàn)槭欠沁f歸方式遍歷要注意結(jié)點(diǎn)做變化處...
線索化二叉樹颅夺,就是把葉子結(jié)點(diǎn)的左指針和右指針分別利用了起來,一個(gè)指向該結(jié)點(diǎn)的前驅(qū)蛹稍,一個(gè)指向該結(jié)點(diǎn)的后繼吧黄,包括其他不是葉子結(jié)點(diǎn)的結(jié)點(diǎn)沒有孩子的都對(duì)應(yīng)指向了前驅(qū)或者是后繼。 那么...
對(duì)于順序存儲(chǔ)二叉樹唆姐,其實(shí)就是根據(jù)左右結(jié)點(diǎn)和父結(jié)點(diǎn)的關(guān)系拗慨,進(jìn)而對(duì)一個(gè)數(shù)組進(jìn)行按樹的存儲(chǔ)方式進(jìn)行輸出,而輸出的方式就是前中后序遍歷存儲(chǔ)二叉樹奉芦,主要還是輸出語句的位置和左右遞歸位置...