演算法導論 第14章 14.1 動態順序統計

一、概念1.動態順序統計動態順序統計是指,在一個動態無序的集合中,任意的順序統計量都可以在O(lgn)時間內確定。2.基礎數組結構紅/黑樹狀結構,每個樹結點的域包括:key[x],color[x],left[x],right[x]3.附加資訊size[x]:以結點x為根的子樹的內部結點(包括x)數,即子樹的大小。如果定義哨兵nil,則size[nil[T]]為0size[x] = size[left[x]] + size[right[x]] +

演算法導論 第22章 圖演算法 22.2 廣度優先搜尋

一、綜述BFS蠻簡單的,沒什麼好的綜述的。BFS演算法的演算法過程與它是有向圖還是無向圖沒有關係,也與用鄰接圖還是用矩陣表示也沒有關係。本文的代碼是用鄰接圖實現的,例子是22-3的有向圖。用鄰接矩陣實現的BFS 見演算法導論-22.2-3-鄰接矩陣實現圖的廣度優先搜尋二、代碼1.Link_Graph.h#include <iostream>#include <queue>using namespace std;#define N 100#define WHITE

Linux2.6-4G的線性地址空間的分配與使用

一、4G線性空間的使用1.0-3G屬於使用者空間,無論是使用者態還是核心態都可以定址,但是核心一般不訪問這裡的資料3-4G屬於系統空間,只有核心態的進程才可以訪問。二、系統空間1.3G-4G的系統空間的使用(1)3G ----- 3G+high_memory:對前896MB RAM進程映射的線性地址(2)high_memory ----- PKMAP_BASE:非連續記憶體區。兩個區間之間有4KB或8KB的空隔,是為了捕獲對記憶體的越界訪問(3)PKMAP_BASE ----- FIXADDR_

演算法導論 22.2-3 鄰接矩陣實現圖的廣度優先搜尋

一、題目如果BFS的輸入圖是用鄰接矩陣表示的,且對該演算法加以修改以處理這種輸入圖表示,那麼該演算法的已耗用時間如何?二、答案與代碼已耗用時間為O(n^2),處理方法見代碼。1.Mat_Graph.h#include <iostream>#include <queue>using namespace std;#define N 100#define WHITE 0#define GRAY 1#define BLACK 2queue<int> Q;class

演算法導論-16.1-3

題目:假設要用很多個教室對一組活動進行調劑。我們希望應用儘可能少的教室來調劑所有的活動。請給出一個有效貪心演算法,來斷定哪一個活動應應用哪一個教室。(這個題目也被成為區間圖著色(interval-graph

Linux2.6系統調用

一、引入系統調用1.概念:作業系統為在使用者態啟動並執行進程與硬體裝置進行交到提供了一組介面。Linux通過向核心發出系統調用來實現這些介面2.作用:對硬體裝置操作的編程更容易提高了系統的安全性使程式更有可移植性3.進入系統調用的兩種方法(1)int

演算法導論 第22章 圖演算法 22.3 深度優先搜尋

一、綜述 深搜策略:在深搜過程中,對於最新發現的頂點,如果它還有以此為起點的而未探測到的邊,就沿此邊繼續探測下去。當頂點v的所有邊都已被探測過後,搜尋將回溯到發現頂點v有起始點的那些邊。時間戳記:當頂點v第一次被發現時記錄下第一個時間戳記d[v],當結束檢查v的鄰接表時,記錄下第二個時間戳記f[v]。v在d[v]時刻前是白色的,在時刻d[v]和f[v]之間是灰色的,在時刻f[v]之後是黑色的。括弧定理,後裔區間的嵌套,白色路徑定理邊的分類:(1)樹邊(2)反向邊(3)正向邊(4)交叉邊對無向圖G

HDU1053Entropy哈夫曼求總值+優先隊列

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1053 題目解釋:輸入一個字串(只包含26個大寫字母和‘_'),每個字母8位,這個字串為多少位?若採用哈夫曼編碼,字串多少位,壓縮率為多少(1位小數)? 常規方法:用優先隊列使用哈夫曼樹,計算每個字元的哈夫曼編碼,那麼字串的總位元=SUM(每個字元編碼的長度*字元出現的次數)。求哈夫曼編碼的過程如下:step1:統計每個字元出現的次數,每個字元作為一個結點,以出現的次數為結點的權值,存入優先隊列中st

演算法導論 第18章 B樹

一、定義1、B樹B樹是為磁碟或其它直接存取輔助存放裝置而設計的一種平衡尋找樹,主要特點是降低磁碟I/O操作次數。B樹以自然的方式推廣二叉尋找樹。B樹的分支因子由磁碟特性所決定。 2、B數的資料結構int n:當前儲存在結點x中的關鍵字數key[N]:n個關鍵,以非降序存放bool leaf;//TRUE:x是葉子;FALSE:x是內結點node *child[N+1]:只有內結點才有。指向其n+1個孩子的指標。child[1].key <= key[1] <=

演算法導論 第9章 排序和順序統計學演算法導論

一、概念第i個順序統計量是該集合中第i小的元素。當n為奇數時,中位元是出現在i=(n+1)/2處的數。當n為偶數時,中位元分別出現在i=n/2和i=(n+1)/2處。在本文中,忽略n的奇偶性,中位元是指出現在i=(n+1)/2處的數。本文假設集合中的數互異。二、代碼#include <iostream>using namespace std;//書中的程式int length_A;void Print(int *A){int i;for(i = 1; i <=

演算法導論 第20章 斐波那契堆

只能把看懂的一部分先寫出來了一、綜述1.斐波那契堆斐波那契堆是可合并堆在不涉及刪除的操作(除去EXTRACT和DELETE)中,操作僅需O(1)的平攤已耗用時間當EXTRACT和DELETE的運算元目較小時斐波那契堆能得到較好的運行效率。斐波那契堆不能有效地支援SEARCH操作用於解決諸如最小產生樹和尋找單源最短路徑等問題的快速演算法都要用到斐波那契堆。2.斐波那契堆的結構斐波那契堆由一組最小堆構成,這些最小堆是有根的無序樹。結點結構://斐波那契堆結點結構struct node{int

Debug 運行正常,Release版本不能正常運行

 引言     如果在您的開發過程中遇到了常見的錯誤,或許您的Release版本不能正常運行而Debug版本運行無誤,那麼我推薦您閱讀本文:因為並非如您想象的那樣,Release版本可以保證您的應用程式可以象Debug版本一樣運行。 如果您在開發階段完成之後或者在開發進行一段時間之內從來沒有進行過Release版本測試,然而當您測試的時候卻發現問題,那麼請看我們的調試規則1: 規則1: 經常性對開發軟體進行Debug和Release版本的常規測試.

演算法導論 第10章 10.1 棧和隊列

一、概念1.棧(1)棧實現了後進先出操作。在棧的數組實現中,棧頂指標指向棧頂元素,插入時先修改指標再插入,刪除時先取棧頂元素再修改指標。當top[S]=0時,棧中空的。(2)數組棧的結構:int top;//棧頂指標int *s];//指向棧數組(3)在棧上實現的操作STACK-EMPTY(S)//判斷棧是否為空白PUSH(S, x)            //把x壓入到棧頂POP(S)                

演算法導論 第21章 用於不相交集合的資料結構

一、綜述不相交集合資料結構(disjoint-set data struct)保持一組不相交的動態集合S={S1,S2,……,Sk}這種數組結構支援三種操作:(1)MAKE-SET(x):構造一種只有元素x的集合(2)UNION(x,y):合并兩個集合(3)FIND-SET(x):找出元素x所屬的集合二、代碼1.UnionFindSet.h/* UnionFindSet.h 並查集,非遞迴方法,含路徑壓縮,數組從0開始*/ #include <iostream> using

位元求01的變換次數

計算LBP運算元的時候遇到計算一個整數求0->1,1->0變換次數的問題。為了能提高效能,前輩告訴一個快速演算法,mark下。int calc_01_change_count(unsigned int n_input){ unsigned int tmp = (n_input << 1); unsigned int n = n_input^tmp;//check how many bits are different unsigned int

演算法導論 第10章 10.2 鏈表

一、概念(1)數組的線性序是由數組的下標決定的,鏈表中的順序是由各對象中的指標所決定的(2)鏈表結點結構node *prev;node *next;int key;(3)鏈表結點node *head;node *nil;//哨兵(4)對鏈表的操作LIST-SEARCH(L, k)LIST-INSERT(L, x)LIST-DELETE(L, x)(5)哨兵是個啞對象,可以簡化邊界條件二、代碼(1)沒有哨兵的情況//鏈表結點結構struct node{node *pre;node

演算法導論 9.3-7 O(n)時間求最接近中位元的k個數

題目:給出一個O(n)時間的演算法,在給定一個有n個不同數位集合S以及一個正整數k<=n後,它能確定出S中最接近其中位元的k個數思考:step1:求出數組的中位元的值O(n)step2:計算數組每個數與中位元差的絕對值,存於另一個數組B中O(n)step3:求出數組B中第k小的數ret O(n)step4:計算數組S中與ret差的絕對值小於ret的數並輸出O(n)其中,step4也可以通過劃分的方法找出數組S中與ret差的絕對值小於ret的數代碼:#include

Linux2.6可延遲中斷

一、基本概念1.Linux把緊隨中斷要執行的操作分為三類 特點處理方法舉例第一類緊急的在禁止可屏蔽中斷的情況下立即執行修改裝置和處理器同時訪問的資料結構第二類非緊急的在開中斷的情況下立即執行修改那些只有處理器才會訪問的資料結構(例如,按下一個鍵後讀掃描碼)第三類非緊急可延遲的由獨立的函數來執行把緩衝區的核心拷貝到某個進程的地址空間2.把可延遲中斷從中斷處理常式中抽出來,由獨立的函數來執行,有助於使核心保持較短的回應時間3.Linux2.6使用可延遲函數和工作隊列來處理可延遲中斷,這兩個都是核心功

從此開始我的BLOG曆程

 從此開始我的BLOG,它將記錄我以後的人生和心路曆程,我不是有事沒事就去寫東西的那種人,可是,一路走到今天,我也許是積攢了太多的情感和故事,也似乎所有的事都是水到渠成似的,從我一出生的那一天起。。。。。。  主要的,我將把我關於自己專業的學習過程記錄下來,雖然這一過程只持續了僅僅2年的時間,但是,有些事情,有些思想的變化,我覺得是應該時常回顧的,雖然有人說一個人開始回憶過去就意味著他老了,可過去走過的一些迷茫,一些彎路,一些衝突,一些覺悟,難道不應該時常回味嗎?也許當我真的老了的時候,再次看到

Linux2.6進程調度

一、Linux2.6調度演算法的特點1.在固定時間內選中要啟動並執行進程,這個時間不會因為可運行進程增多而變大2.每個CPU有自己的可運行隊列3.較好地解決區分互動式進程與批處理進程的問題二、進程按調度類型分類1.SCHED_FIFO:先進先出的即時進程如果沒有其它更高優先順序(必須是更高)的可運行即時進程(普通進程的優先不可能高於即時進程)出現,就可以一地上運行。對於這種進程,時間長度是沒有意義的。2.SCHED_RR:時間片輪轉的即時進程所有具有同優先順序(且都是當前情況下優先順序最高)的S

總頁數: 61357 1 .... 18282 18283 18284 18285 18286 .... 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.