拓?fù)渑判颍▓D)掏熬、冒泡排序、插入排序

拓?fù)渑判?/h2>

AOV網(wǎng)絡(luò)(Activity On Vertex)
拓?fù)湫颍喝绻趫D中從V到W有一條有向路徑秒梅,則V一定排在W之前旗芬。滿足此條件的頂點(diǎn)序列稱為一個拓?fù)湫?br> 獲得一個拓?fù)湫虻倪^程就是拓?fù)渑判?br> AVO如果有合理的拓?fù)湫颍瑒t必定是有向無環(huán)圖(Directed Acyclic Graph捆蜀,DAG)
算法:
void TopSort ( )
{
for ( cnt = 0 ; cnt < [ V ] ; cnt ++ ) {
V = 未輸出的入度為0的頂點(diǎn) ;
if ( 這樣的V不存在 ) {
Error ( “圖中有回路” ) ;
break ;
}
輸出V疮丛,或者紀(jì)錄V的輸出序號;
for ( V 的每個鄰接點(diǎn) W )
Indegree [ W ]--辆它;
}
}

改進(jìn):隨時將入度變?yōu)?的頂點(diǎn)放到一個容器里
void TopSort ( )
{
for ( 圖中每個頂點(diǎn) V ) {
if ( Indegree [ W ] == 0 )
Enqueue ( V , Q ) ;
while ( ! IsEmpty ( Q ) ) ;
V = Dequeue ( Q ) ;
輸出V誊薄,或者紀(jì)錄V的輸出序號;
cnt ++; // 計數(shù)器锰茉,紀(jì)錄頂點(diǎn)數(shù)量
for ( V 的每個鄰接點(diǎn) W )
if ( —Indegree [ W ] == 0 ) //如果減完后入度為0呢蔫,則將其放入容器中
Enqueue ( W , Q ) ;
}
if ( cnt != [ V ] )
Error ( “圖中有回路” );
}
時間復(fù)雜度 T = O( |V| + |E| )
此算法可以用來檢測有向圖是否DAG

關(guān)鍵路徑問題
AOE(Activity On Edge)網(wǎng)絡(luò)
一般用于安排項(xiàng)目的工序飒筑,活動表示在邊上片吊,頂點(diǎn)代表活動的停止;邊上寫有活動持續(xù)時間
頂點(diǎn)包括:頂點(diǎn)編號协屡、最早完成時間定鸟、最晚完成時間

002WV0d1zy712uoiZBX55&690.png

兩類基礎(chǔ)算法,排序和查找
排序算法的前提前提:
void X_Sort ( ElementType A [ ], int N )
1.大多數(shù)情況下著瓶,為簡單起見联予,討論從小到大的整數(shù)排序
2.N是正整數(shù),只討論基于比較的排序(> = < 是有定義的)
3.只討論內(nèi)部排序:內(nèi)存空間充分大材原,排序在內(nèi)部空間中完成
4.穩(wěn)定性:任意兩個相等的數(shù)據(jù)沸久,排序前后的相對位置不發(fā)生改變
5.沒有一種排序算法是任何情況下都表現(xiàn)最好的

-簡單排序:

-冒泡排序

void Bubble_Sort ( ElementType A[ ] , int N )
{
for ( P = N - 1 ; P >= 0 ; P — ) {
flag = 0 ;
for ( i = 0 ; i < p ; i ++ ) { // 一趟冒泡
if ( A[ i ] > A[ i + 1 ] ) { // 比較相鄰兩個元素的大小
Swap ( A[ i ] , A[ i + 1 ] ) ;
flag = 1 ; // 標(biāo)識發(fā)生了交換
}
} // 思考:假設(shè)當(dāng)程序執(zhí)行到某一步時 數(shù)據(jù)已經(jīng)是有序的了,但此時程序是不知道的余蟹,所以還要判斷
if ( flag == 0 ) break ; // 全程無交換 數(shù)據(jù)已經(jīng)有序 不需要再進(jìn)從排序
}
}
最好情況:順序 T = O ( N )
最壞情況:逆序 T = O ( N的平方 )
由于是單向執(zhí)行卷胯,比較相鄰的兩個元素,所以適用于鏈表存儲的數(shù)據(jù)
當(dāng)兩個數(shù)據(jù)相等威酒,冒泡排序的比較過程中沒有將它們交換位置窑睁,所以改算法是穩(wěn)定的

-插入排序

void Insertion_Sort ( ElementType A[ ] , int N )
{
for ( P = 1 ; P < N ; P ++ ) // 假設(shè)第0個元素已經(jīng)存在挺峡,從第一個元素開始插入
{
Tmp = A[ P ] ; // 下一個元素
for ( i = P ; i > 0 && A[ i - 1 ] > Tmp ; i -- ) // 需要插入的新元素當(dāng)前從最后那個元素開始比起,比到第一個元素
A[ i ] = A[ i - 1 ] ; // 移除空位
A[ i ] = Tmp ; // 新元素落位
}
}

最好情況:順序 T = O ( N )
最壞情況:逆序 T = O ( N的平方 )
冒泡元素是兩兩交換 需要涉及到三步担钮,插入排序元素向后錯橱赠,新元素一次放入

逆序?qū)Γ簩τ谙聵?biāo) i < j,如果A[ i ] > A[ j ]箫津,則稱 ( i , j )是一對逆序?qū)?br> 每一次交換元素正好消去一個逆序?qū)ο烈蹋蛄兄杏卸嗌賯€逆序?qū)Γ托枰粨Q幾次元素
時間復(fù)雜度下界:
插入排序:T( N , I ) = O( N + I ) 其中 I 是逆序?qū)€數(shù)苏遥,如果序列基本有序饼拍,則插入排序簡單且高效
定理:任意N個不同元素組成的序列平均有 N(N-1)/4 個逆序?qū)Α?br> 定理:任何僅以交換相鄰元素來排序的算法,其平均時間復(fù)雜度的下界為N平方
要提高算法效率田炭,我們必須:每次交換不止消去一個逆序?qū)κΤ晕覀兠看谓粨Q相隔較遠(yuǎn)的兩個個元素

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市教硫,隨后出現(xiàn)的幾起案子司澎,更是在濱河造成了極大的恐慌,老刑警劉巖栋豫,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谚殊,居然都是意外死亡丧鸯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門嫩絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丛肢,“玉大人,你說我怎么就攤上這事剿干》湓酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵置尔,是天一觀的道長杠步。 經(jīng)常有香客問我,道長榜轿,這世上最難降的妖魔是什么幽歼? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谬盐,結(jié)果婚禮上甸私,老公的妹妹穿的比我還像新娘。我一直安慰自己飞傀,他們只是感情好皇型,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布诬烹。 她就那樣靜靜地躺著,像睡著了一般弃鸦。 火紅的嫁衣襯著肌膚如雪绞吁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天寡键,我揣著相機(jī)與錄音掀泳,去河邊找鬼。 笑死西轩,一個胖子當(dāng)著我的面吹牛员舵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藕畔,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼马僻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了注服?” 一聲冷哼從身側(cè)響起韭邓,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溶弟,沒想到半個月后女淑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辜御,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年鸭你,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擒权。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡袱巨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碳抄,到底是詐尸還是另有隱情愉老,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布剖效,位于F島的核電站嫉入,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏璧尸。R本人自食惡果不足惜劝贸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逗宁。 院中可真熱鬧映九,春花似錦、人聲如沸瞎颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至引有,卻和暖如春瓣颅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背譬正。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工宫补, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曾我。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓粉怕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抒巢。 傳聞我的和親對象是個殘疾皇子贫贝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,737評論 0 33
  • https://zh.visualgo.net/graphds 淺談圖形結(jié)構(gòu)https://zh.visualgo...
    狼之獨(dú)步閱讀 4,137評論 0 0
  • 幾個練習(xí) ①你是怎么判斷一個人的呢蛉谜?判斷別人時稚晚,最成功的經(jīng)驗(yàn)是什么?最失敗的經(jīng)驗(yàn)是什么型诚?舉例說明 其實(shí)并沒有真的有...
    變換之水閱讀 594評論 0 0
  • 我們生活在一個信息極度膨脹的時代 這種背景導(dǎo)致我們什么都想試一試 可有些東西收藏了 就再也不會去看 當(dāng)時的一時沖動...
    cherish1閱讀 231評論 0 0
  • 當(dāng)我們經(jīng)過了兵荒馬亂的高考狰贯,人生的轉(zhuǎn)折已經(jīng)出現(xiàn)也搓,你該怎樣?白巖松說“信那些該信的東西暮现,因?yàn)樗芨淖兡恪薄D敲闯眩埬?..
    星眠閱讀 9,097評論 7 4