范型編程_排序


title: 范型編程_排序
date: 2016-05-02 12:05:57
categories: 算法 #文章文類
tags: [范型編程,STL,Geekband]


sort

  • 對(duì)區(qū)域內(nèi)元素進(jìn)行從小到大排序
  • 使得 it1 < it2 ,滿足(it1) < (it2)
  • 對(duì)象必須提供operator<

partial_sort

  • 區(qū)域[_First,Mid)元素是從小到大有序排列
  • 區(qū)域(Mid,_Last)是未定義的

binary_search

  • 在區(qū)域內(nèi)查找==_Val的元素
  • 容器中的元素首先要排序, 如果不先排序,那么使用binary_search將永遠(yuǎn)找不到
e.g  
v[] = {1,2,3,10,5} 
baniry_search(v.begin(), v.end(), 5) 
這里將會(huì)返回false

merge

  • <font color=red>排好序的</font> 區(qū)域1和區(qū)域2合并到_Dest中
  • 一定要注意是先排序

基于排序集合的一些算法

  • includes
  • set_union
  • set_intersection
  • set_differrence

includes

  • 判斷區(qū)域1內(nèi)是否包含區(qū)域2
  • **區(qū)域1,區(qū)域2都是排好序的
  • 包含則返回true
e.g
v1[]={1,2,3,4,5,6,7}
v2[]={1,4,6}
includes(v1.begin(),v1.end(),v2.begin(),v2.end()) 返回true

v1[]={1,2,3,4,5,6,7}
v2[]={4,9}
includes(v1.begin(),v1.end(),v2.begin(),v2.end()) 返回false

集合算法

set是STL中一種標(biāo)準(zhǔn)關(guān)聯(lián)容器(vector,list,string,deque都是序列容器歪沃,而set垃瞧,multiset类咧,map余耽,multimap是標(biāo)準(zhǔn)關(guān)聯(lián)容器)坠陈,它底層使用平衡的搜索樹——紅黑樹實(shí)現(xiàn),插入刪除操作時(shí)僅僅需要指針操作節(jié)點(diǎn)即可完成辜羊,不涉及到內(nèi)存移動(dòng)和拷貝蝗肪,所以效率比較高。

  • 在set中元素都是唯一的贰谣。
  • 默認(rèn)情況下會(huì)對(duì)元素自動(dòng)進(jìn)行升序排列顶燕。
  1. 集合的交(set_intersection)
  2. 差(set_difference)
  3. 并(set_union)
  4. 對(duì)稱差(set_symmetric_difference)

基于堆的算法

  • make_heap
  • push_heap
  • pop_heap
  • sort_heap

make_heap

  • 將區(qū)域轉(zhuǎn)換成一個(gè)堆
  • 對(duì)結(jié)構(gòu)采用max_heap,維持平衡二叉樹

v[]={1,4,200,8,100,5,7}
mak_heap(v,v+7)

mak_heap

push_heap

  • 向堆內(nèi)添加元素
  • 算法假設(shè)區(qū)域已經(jīng)是一個(gè)堆
  • 堆結(jié)構(gòu)采用max_heap,維持平衡二叉樹

e.g
v[]={100,90,99,70,80,30,45,20,35,10,95}

make_heap(v,v+(v.size()-1), v+v.size()) //加入的是最后一個(gè)元素'95'

  1. make_heap后


2.實(shí)現(xiàn)流程

pop_heap

  • 從堆中彈出根頂元素
  • 算法假設(shè)容器已經(jīng)是個(gè)堆
  • 堆結(jié)構(gòu)采用max_heap,維持平衡二叉樹

e.g
v[]={100,90,99,70, 25,30,45,20,35,10,95}

make_heap(v,v+(v.size()-1), v+v.size()) //加入的是最后一個(gè)元素'95'

  1. make_heap后


  2. pop_heap實(shí)現(xiàn)流程

sort_heap

  • 把堆中的元素進(jìn)行排序
  • 對(duì)結(jié)構(gòu)采用max_heap,維持平衡二叉樹
  • Sort做法實(shí)際就是不斷pop_heap
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凑保,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涌攻,更是在濱河造成了極大的恐慌欧引,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恳谎,死亡現(xiàn)場(chǎng)離奇詭異芝此,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)因痛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門婚苹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸵膏,你說(shuō)我怎么就攤上這事膊升。” “怎么了谭企?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵廓译,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我债查,道長(zhǎng)非区,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任盹廷,我火速辦了婚禮征绸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俄占。我一直安慰自己管怠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布缸榄。 她就那樣靜靜地躺著排惨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碰凶。 梳的紋絲不亂的頭發(fā)上暮芭,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音欲低,去河邊找鬼辕宏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛砾莱,可吹牛的內(nèi)容都是我干的瑞筐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼腊瑟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聚假!你這毒婦竟也來(lái)了块蚌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膘格,失蹤者是張志新(化名)和其女友劉穎峭范,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘪贱,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纱控,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菜秦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甜害。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖球昨,靈堂內(nèi)的尸體忽然破棺而出尔店,到底是詐尸還是另有隱情,我是刑警寧澤主慰,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布嚣州,位于F島的核電站,受9級(jí)特大地震影響河哑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龟虎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一璃谨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲤妥,春花似錦佳吞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贡耽,卻和暖如春衷模,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲赂。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工阱冶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滥嘴。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓木蹬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親若皱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镊叁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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