PHP SPL標(biāo)準(zhǔn)庫之堆

簡介

堆(英語:heap)是計算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱振湾。堆通常是一個可以被看做一棵樹的數(shù)組對象杀迹。堆總是滿足下列性質(zhì):
堆中某個節(jié)點的值總是不大于或不小于其父節(jié)點的值;堆總是一棵完全二叉樹押搪。
將根節(jié)點最大的堆叫做最大堆或大根堆树酪,根節(jié)點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆大州、斐波那契堆等续语。(以上內(nèi)容網(wǎng)上摘取,是不是看了之后一臉懵逼摧茴?還是看看代碼吧)

1.類摘要

abstract SplHeap implements Iterator , Countable {
    /* 方法 */
    public __construct ( void )
    abstract protected int compare ( mixed $value1 , mixed $value2 )
    public int count ( void )
    public mixed current ( void )
    public mixed extract ( void )
    public void insert ( mixed $value )
    public bool isEmpty ( void )
    public mixed key ( void )
    public void next ( void )
    public void recoverFromCorruption ( void )
    public void rewind ( void )
    public mixed top ( void )
    public bool valid ( void )
}

從這個類的定義可以看出來绵载,這是一個抽象類,但是只有一個抽象實現(xiàn)需要方法compare苛白,啥意思呢娃豹?文檔的定義是: Compare elements in order to place them correctly in the heap while sifting up.翻譯過來就是比較元素,在篩選時候正確的放置其位置购裙,問題來了懂版,和誰比呢?

2.實例

<?php

namespace SPL;

class SPLHeap extends \SplHeap
{
    protected function compare($value1, $value2)
    {
        return $value1 > $value2 ? -1 : 1;
    }
}

$hp = new SPLHeap();
$hp->insert(1);
$hp->insert(9);
$hp->insert(7);
$hp->insert(7);
$hp->insert(5);
$hp->insert(11);
$hp->insert(55);
$hp->insert(55);
$hp->insert(20);

$hp->rewind();
foreach ($hp as $value) {
    echo $value . "\n";
}

運行結(jié)果:從小到大排序輸出 1,5,7,9....
從上述例子可以發(fā)現(xiàn)compare函數(shù)的主要作用就是提供一個排序規(guī)則躏率,通過返回一個大于0或者小于0的數(shù)來排序躯畴,其他方法和鏈表差不多!
PHP SPL里面還有一個SplMinHeap和SplMaxHeap,即最小堆和最大堆薇芝,它們其實都是繼承的SplHeap蓬抄,方法基本上也一樣!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夯到,一起剝皮案震驚了整個濱河市嚷缭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耍贾,老刑警劉巖阅爽,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荐开,居然都是意外死亡付翁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門晃听,熙熙樓的掌柜王于貴愁眉苦臉地迎上來百侧,“玉大人,你說我怎么就攤上這事能扒∮犊剩” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵赫粥,是天一觀的道長观话。 經(jīng)常有香客問我,道長越平,這世上最難降的妖魔是什么频蛔? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮秦叛,結(jié)果婚禮上晦溪,老公的妹妹穿的比我還像新娘。我一直安慰自己挣跋,他們只是感情好三圆,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般舟肉。 火紅的嫁衣襯著肌膚如雪修噪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天路媚,我揣著相機(jī)與錄音黄琼,去河邊找鬼。 笑死整慎,一個胖子當(dāng)著我的面吹牛脏款,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裤园,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼撤师,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拧揽?” 一聲冷哼從身側(cè)響起剃盾,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎强法,沒想到半個月后万俗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡饮怯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年闰歪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓖墅。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡库倘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出论矾,到底是詐尸還是另有隱情教翩,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布贪壳,位于F島的核電站饱亿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闰靴。R本人自食惡果不足惜彪笼,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚂且。 院中可真熱鬧配猫,春花似錦、人聲如沸杏死。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腐巢,卻和暖如春品追,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背系忙。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工诵盼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惠豺,地道東北人银还。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像洁墙,于是被迫代替她去往敵國和親蛹疯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu)热监,樹與前面介紹的線性表捺弦,棧,隊列等線性結(jié)構(gòu)不同孝扛,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,442評論 1 31
  • 1 序 2016年6月25日夜列吼,帝都,天下著大雨苦始,拖著行李箱和同學(xué)在校門口照了最后一張合照寞钥,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,078評論 0 12
  • 排序的基本概念 在計算機(jī)程序開發(fā)過程中,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個關(guān)鍵字進(jìn)行排序陌选,排序完成的序列可用于快...
    Jack921閱讀 1,421評論 1 4
  • 基于樹實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)理郑,具有兩個核心特征: 邏輯結(jié)構(gòu):數(shù)據(jù)元素之間具有層次關(guān)系; 數(shù)據(jù)運算:操作方法具有Log級的平...
    yhthu閱讀 4,254評論 1 5
  • 凌晨一點半買燒烤咨油,準(zhǔn)備回宿舍和普洱茶一起解決掉您炉。 這并非我的癖好,只是突然想吃役电,想把悲傷都吃到肚子里赚爵。 燒烤,茶法瑟,...
    梁十本閱讀 314評論 1 1