第十篇–演算法導論第七章習題解

7-1-1:其中藍圈表示下次排序中的主元,紅框表示這次不用參加排序的元素:7-1-2:返回r;這兒肯定就是對等號做處理,對於對於主元的元素,一個放入左邊,另一個放在右邊,交叉進行;PARTITION(A,p,r) x=A[r] i=p-1 flag=true//對於等於x元素的處理控制, //當為true時,放在左邊,當為false時放在右邊 for j=p to r-1 //此處等號單獨處理 if A[j]==x and flag==true i=i+1

圖論學習—序列是否可圖?

(Havel-Hakimi 定理)由非負整數組成的非增序列s:d1, d2, …, dn(n ≥ 2, d1 ≥ 1)是可圖的,若且唯若序列                  s1: d2 – 1, d3 – 1, …, dd1+1 – 1, dd1+2, …, dn是可圖的。序列s1 中有n-1 個非負整數,s 序列中d1 後的前d1 個度數(即d2~dd1+1)減1 後構成s1 中的前d1 個數。不可圖的情況:(1)某次對剩下序列排序後,最大的度數(設為d1)超過了剩下的頂點數;(2)

圖論學習2-DFS

DFS是我學習圖論所學到的第二個知識點,思想就是棧的思想。解一道自己做的題:農田灌溉問題:Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a different type of pipe.

圖論學習-序列是否可圖化(2)

    上次學習了havel-hakimi定理判斷一個度數序列是否可圖,http://blog.csdn.net/wangyanphp/article/details/8834608(Havel-Hakimi 定理)由非負整數組成的非增序列s:d1, d2, …, dn(n ≥ 2, d1 ≥ 1)是可圖的,若且唯若序列                  s1: d2 – 1, d3 – 1, …, dd1+1 – 1, dd1+2, …, dn是可圖的。序列s1 中有n-1 個非負整數,s

第十二篇–演算法導論第八章–線性時間排序

什麼是比較排序。 在排序的最終結果中,個元素的次序依賴於它們之間的比較,此為比較排序。插入排序,歸併排序,堆排序,快速排序,這些演算法都是屬於比較排序。比較排序的效能是有下界的,我們通過決策樹模型給出:對於n個元素的決策樹,共有n!個葉結點,設決策樹高度為h,具有l個葉結點,那麼有關係式:n!<=l<=2^h   

Allocate–摘自STL源碼剖析

Allocate管理的是記憶體配置。這裡主要考慮的是對於小額區塊的記憶體管理,如果小額區塊直接使用new操作符進行分配,第一會造成記憶體的片段;第二配置時會造成額外負擔;所謂額外負擔就是,每次索取一塊記憶體時,都必須向系統分配一塊空間,以記錄記憶體的大小。所以這裡採用兩級配置器:第一級配置器就是當要求的記憶體足夠大時,直接使用malloc和free配置和釋放記憶體;多大是足夠大?STL中定義當要求得記憶體大於128byte時,就是足夠大了。//mymemory.h#ifndef

迭代器–摘自STL源碼剖析

//myiterator#ifndef _MYITERATOR#define _MYITERATOR//迭代器是一種智能指標//首先利用繼承關係定義五種迭代器類型struct input_iterator_tag{};struct out_put_tag{};struct forward_iterator_tag:public input_iterator_tag{};struct bidirectional_iterator_tag:public forward_iterator_tag{};

第五篇–演算法導論-矩陣乘法的Strassen演算法

 本篇文章主要介紹的是遞迴式的求解方法,strassen演算法理論價值高於實際價值。 求解遞迴式的方法有三種:代入法。猜測解的形式,然後用數學歸納法證明;遞迴樹法,這個方法簡單易用;主方法:對於形如:T(n)=aT(n/b)+f(n)  (a>=1 ,b>1)           樸素矩陣乘法偽碼:SQUARE-MATRIX-MULTIPLY(A,B) n=A.rows let C be a new matrix for i=1 to n for j=1 to n

poj1659 – Frogs’ Neighborhood

                                  想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410                                 

演算法導論第12章習題解

12-1-2:二叉搜尋樹:left.key<key<eight.key;最小堆:key<left.key,key<right.key;不能,使用堆排序的話,得O(nlgn)12-1-3:這個已經在第十章做過了,使用棧的話,有點浪費,因為使用棧,parent就用不上了;不使用棧的情況,就是使用parent回溯父結點,對於x,我們已經有了尋找x後繼得程式:TERR-SUCCSSOR,我們從最小節點開始調用TREE-SUCCESSOR即可12-1-4:這個也已經做過了,此處不重

第十六篇–演算法導論排序篇總結-開發實用quicksort演算法

行百裡者半九十,此言得之。當看完快速排序之後,我瞭解了它的思想,我也會實現它的代碼,可是,這就是我所需要的quicksort演算法嗎?顯然不是。習題7-1-2問道:如果數組中元素都相同,該怎麼辦? 如果採用虛擬碼直接實現的程式,時間複雜度為n的平方;作者提供了思路,當A[p..r]中的元素相同時,返回的q為(p+r)/2,這樣就能保持最好的效能。習題7-4-5問道:難道一路quicksort遞迴到底,效能最好嗎?能不能改進?作者又提供了思路:當輸入數組已經幾乎有序時,插入排序的速度非常快;在實際

poj2488 – A Knight’s Journey

                                     想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410                                     轉載請註明出處:http://blog.csdn.net/wangjian8006題目大意:             

第三篇—演算法導論-第二章習題解

2-3-1:2-3-2:MERGE2(A,p,q,r) n1=q-p+1 n2=r-q let L[1..n1]and R[1...n2] be new arrays for i=1 to n1 L[i]=A[p+i-1] for j=1 to n2 R[j]=A[q+j] i=1 j=1 k=1 while i<=n1 and j<=n2 if L[i]<=R[j] A[k]=L[i]i=i+1 else

演算法導論第13章習題解

13-1-1:13-1-2:如果是紅色,不是紅/黑樹狀結構,違反性質4;如果是黑色,不是紅/黑樹狀結構,違反性質5;13-1-3:是紅/黑樹狀結構;這也就說明了,後面的插入操作和刪除操作,使違反性質的節點上移至根結點策略;13-1-4:度:可能是2,此時兩個子結點都是黑色的;可能是3,此時有一個紅色子結點,一個黑色的;可能是4,此時,有兩個紅色子結點;深度就是black-height,因為紅色的都被吸收了;13-1-5:假設最短的一條長度為h1,那麼它的黑高bh1最多為h1;假設最長的一條長度為

第十七篇–演算法導論第十章習題選解

10-1-2:兩個棧分別從數組的兩端開始,向中間擴充;10-1-5:這個deque的代碼以前的實現過(c++

poj1419 – Graph Coloring

                                  想看更多的解題報告: http://blog.csdn.net/wangjian8006/article/details/7870410                                  轉載請註明出處:http://blog.csdn.net/wangjian8006題目大意:給出你一個無向圖,然後對其中的點去上色,

poj-1236 強連通

/*poj 1236題意:有一個有向圖,現在在任意多個節點上發送資料,問使所有節點都能收到資料,需要向多少個節點發送資料 仍然是這個有向圖,問至少需要添加多少條邊才能使得在任意節點發送資料所有節點都能收到資料。思路:很明顯這道題是強連通方面的題目,在強連通中縮點之後的節點的出度和入度都十分重要。 我們現在來考慮出度和入度和這道題目的答案有什麼關係。 入度:如果有一個節點有入度那我們傳送資料的時候肯定可以選擇指向它的那個節點。所以顯然入度為0的點就是第一問的答案

第十五篇–演算法導論第九章習題解

9-1-1:假設我們還是成對元素的比較,選取出每對元素的最小值,再進行成對比較,這個結構學名叫做勝者樹;那麼第二小的元素肯定是跟第一小的元素比較中被過濾掉的;假設有n個元素,那麼樹的高度為ceil(lgn),建立這顆“勝者樹”的比較次數是(n-1),尋找第二小元素的比較次數最多是是ceil(lgn)-1所以比較次數是n+ceil(lgn)-2下列實現沒有用鏈表尋找關係,讀者可以自己用鏈表實現:#include<iostream>//此處主要模仿第六章中的堆即可using

演算法導論第12章–二叉搜尋樹

/*二叉搜尋樹是一棵二叉樹,之所以成為搜尋樹,是因為適用於搜尋,大部分與搜尋有關的演算法, *大都採用這一策略,包括B樹,也可以看做是對二叉搜尋樹的擴充 *二叉搜尋樹滿足: *設x為樹中一個結點,如果y是x左子樹的一個節點,那麼y.key<=x.key *如果y是x右子樹的一個結點,那麼y.key>=x.key *//*二叉搜尋樹中的結點結構: *關鍵字key,衛星資料data *parent--父結點,left-child--左孩子,right-child右孩子

資料結構篇-單鏈表

先自己寫了一個簡單但是代碼寫的挺差的單鏈表:#include"mymemory.h"#include"myconstruct.h"#include<iostream>//簡單單鏈表template<typename T>struct _slist_node {T data;_slist_node* next;};//既然是簡單鏈表,我們應該使用new分配記憶體,不過,我覺得我們確實應該使用記憶體池template<typename T,typename Alloc=

總頁數: 61357 1 .... 7571 7572 7573 7574 7575 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.