<5B BECBB0EDB8AEC1F25D312D34B0AD5FC3E2BCAEBCF6BEF7C0DAB7E F31702E504446>

Similar documents
untitled

Microsoft PowerPoint - ds-1.ppt [兼容模式]

業 用 地 出 讓 最 低 價 標 準 不 得 低 於 土 地 取 得 成 本 土 地 前 期 開 發 成 本 和 按 規 定 收 取 的 相 關 費 用 之 和 工 業 用 地 必 須 採 用 招 標 拍 賣 掛 牌 方 式 出 讓 其 出 讓 價 格 不 得 低 於 公 佈 的 最 低 價 標

条款

CC213

C/C++ - 函数

新婚夫妇必读(九).doc

C/C++ - 文件IO

C/C++语言 - 运算符、表达式和语句

Microsoft Word _4

郑州大学(下).doc

厨房小知识(六)

广 东 纺 织 职 业 技 术 学 院 发 展 党 员 公 示 制 实 施 办 法 关 于 推 荐 优 秀 团 员 作 为 党 的 发 展 对 象 工 作 的 意 见 后 勤 管 理 工 作 广 东 纺 织 职 业 技 术 学 院 新 引 进 教 职 工 周 转 房 管 理


游戏攻略大全(五十).doc

金融英语证书考试大纲


健康知识(二)

中南财经大学(二).doc

广西大学(一).doc

根据学校教学工作安排,2011年9月19日正式开课,也是我校迁址蓬莱的第一学期开学

山东大学(一).doc

2

主 编 : 杨 林 副 主 编 : 张 新 民 邹 兰 曹 纯 纯 周 秋 婷 李 雅 清 黄 囡 囡 评 审 顾 问 : 杨 林 张 新 民 评 审 : 张 新 民 邹 兰 曹 纯 纯 周 秋 婷 李 雅 清 黄 囡 囡 李 忆 萍 徐 如 雪 文 字 编 辑 : 曹 纯 纯 邹 兰 李 雅 清

最新文物管理执法全书(十四).doc

园林常识(二).doc

前 言 二 一 六 年 四 月 四 日, 兒 童 節, 誕 生 了 一 件 美 事 : 中 國 作 家 曹 文 軒 在 意 大 利 博 洛 尼 亞 國 際 童 書 展 榮 獲 國 際 安 徒 生 文 學 獎, 是 該 獎 創 設 六 十 年 來, 第 一 位 摘 桂 的 中 國 作 家, 意 義 重

湖 南 科 技 大 学

上海外国语大学(二).doc

2009 陳 敦 德

切 实 加 强 职 业 院 校 学 生 实 践 能 力 和 职 业 技 能 的 培 养 周 济 在 职 业 教 育 实 训 基 地 建 设 工 作 会 议 上 的 讲 话 深 化 教 育 教 学 改 革 推 进 体 制 机 制 创 新 全 面 提 高 高 等 职 业 教 育 质 量 在

鸽子(三)

兽药基础知识(四)

园林植物卷(十).doc

园林植物卷(十七).doc

临床手术应用(三)

家装知识(二十)

医疗知识小百科

家庭万事通(一)

家装知识(三)

园林绿化(一)

园林植物卷(十五).doc

最新监察执法全书(一百五十).doc

兽药基础知识(三)

奥运档案(四).doc

最新监察执法全书(五十).doc

最新执法工作手册(三百八十四)

中华美食大全4

动物杂谈_二_.doc

抗非典英雄赞歌(三)

新时期共青团工作实务全书(三十五)

经济法法律法规第十九卷

游戏攻略大全(五十九).doc

火灾安全实例

兽药基础知识(七)

实用玉米技术(二)

中国政法大学(一).doc

水产知识(一)

國立中山大學學位論文典藏.PDF

Microsoft Word mpc-min-chi.doc

( ) 1

穨cwht.PDF

900502_Oasis.indb

bnb.PDF

untitled

招行2002年半年度报告全文.PDF

(Microsoft Word - outline for Genesis 9\243\2721\243\25529.doc)

穨Shuk-final.PDF

2

Microsoft Word - om388-rnt _excl Items 16 & 38_ _final_for uploading_.doc

% 25% (i) 95% 96,290,900 (ii) 99.9% 17,196,000 (iii) 99.9% 89,663,100 2

¨Æ·~½g¡ã¾·~¤ÀÃþ

公務員懲戒法實務及新制

大小通吃-糖尿病


98825 (Project Sunshine) Chi_TC_.indb

游戏攻略大全(五十二).doc

游戏攻略大全(五十一).doc

立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :

女性减肥健身(四).doc

上海市本科教学质量年度报告

C/C++ - 字符输入输出和字符确认

C/C++ 语言 - 循环

第2章 递归与分治策略

Turing Machine [1] n n n findmin (a 1, a 2,, a n ) 1. result a 1 2. index 2 3. result min (result, aindex) 4. index index go to step 3 till (in

C/C++语言 - C/C++数据

C


第5章修改稿

四川省普通高等学校

南華大學數位論文

Fuzzy Highlight.ppt

9,, (CIP) /. :, ISBN T U767 CI P ( 2004 ) : 122 : / mail.whut.edu.c

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

理 L~ 胆 有 纪 嚣 中 国 共 产 党 早 期 的 主 要 领 导 人, 伟 大 的 马 克 思 主 义 者, 卓 越 的 无 产 阶 级 革 命 家 理 论 家 和 宣 传 家, 中 国 革 命 文 学 事 业 的 重 要 奠 基 人 一 一 瞿 秋 白 同 志 诞 辰 110 周 年 暨

比干洗店还专业 To:



长盛同辉深证100等权重指数分级证券投资基金基金合同.doc

Microsoft Word htm

Transcription:

: 2 = 3 4? 0 an ordered set of unambiguous, executable steps that produces a result and terminates in a finite time (computational theory) ( ) 5 6 (C-) int min, max; float degree, b; char ch, token; /,,, min = 0; degree = a + b; while (age <= adult) for (i=; i < n; i++) 8

(C-) if ( age > adult ) else 2 int num[0]; Power (x, n) p=; for (i=; i<=n; i++) p = p * x; return (p); printf( Power (2, 5) ); 9 0 + 2 [] [0] [] [2] [3] [4] [5] [6] [0] [] [2] [3] [4] [5] [6] head 62 24 80 0 head 62 5 80 24 2 4 0 5 62 80 3 4 D C top T T n T, T 2 T n. T T2 T 3 C D T 3 C D E Head/Front Tail/Rear T E F G H I J K L M N T 2 T T 32 6

2 degree leaf ( terminal ), noterminal parent, child, sibling C ancestor, descendant degree,, height/ depth forest D E C C C ordered tree 8 C C C D E F G H I J K D H I E J K F G L M N O D E H I F J K G perfect full C C C D E F G D E F G D E F G H I J complete N O balanced 9 H I J K 20 G=(V,E) V :, E : (,2) = (2,) 3 <,2> > 2 5 3 E 2 3 4 C C 4 adjacent, incident subgraph path, length degree in-degree, out-degree simple path, cycle, loop connected strongly connected 2 2 3 4 0 3 2 4 2 3 0 3 2 0 5 4 4 5 0 3 2 2 4 3 5 4 head[] 2 3 4 2 3 3 2 4 4 3 4 2 4 5 4 2 3 5 23 24

: : 2 ( ) [0] [] [2] [3] [4] [5] [6] [] [0] [] [2] [3] [4] [5] [6] [] 2? 25 26 K. K! SequentialSearch ([], n, x) // : [..n] x // : i i = ; 2 while ( i <= n && [i]!= x ) 3 i = i + ; 4 return (i); 2 28 J inarysearch ([], key, left, right) // [mid]=key mid mid = (left + right)/2; 2 if ([mid] = key) return(mid); 3 else if ([mid] > key) inarysearch(, key, left, mid-) 4 else inarysearch(, key, mid+, right); 29 greedy divide-and-conquer dynamic programming. 2(, ), 3( ) 3 32

4. 6. (, )., 4.,, 34 2 3,,,?. T : 0, 00,, 0, 5, 80 0 20 0 0 0 0 0 0 0 0 0 35 36 M w i p i n p = w = 3 p 2 = 20 w 2 = 5 M=0 n=4 p 3 = 9 w 3 = 3 p 4 = 4 w 4 = 4 3 38 0/ M = 0, n = 4 (p, p 2, p 3, p 4 ) = (, 20, 9, 4) (w, w 2, w 3, w 4 ) = (3, 5, 3, 4) M = 0, n = 4 (p, p 2, p 3, p 4 ) = (, 20, 9, 4) (w, w 2, w 3, w 4 ) = (3, 5, 3, 4) ( ) p p2 p3 p 4,,, w w2 w3 w4 (5, 4, 3, 3.5) = p + p 2 + p 4 = 42 p w p, w p, w p, w 2 3 4 2 3 4 (5, 4, 3, 3.5) = p + p 2 = 35 = p + p 3 + p 4 = 38 39

, space complexity (= + ) time complexity 4 42 = () 43 f(n) :,, ( n) P( I) t( I) W IS n ( n) mint( I) IS n ( n) max t( I) : I Sn S n : n P(I) : I t(i) : I Sumverage([0..n-], n) sum = 0; 2 while ( i < n ) n+ 3 sum = sum + [i]; n 4 i = i + ; n 5 mean = sum / n; T(n) = 3n+3 O(n) 45 46 n n=5 n=0 n= 0n+9 n 2 /2+3n 59 09 9 2.5 80.5 - c n 0 0 c g(n) f(n)=o(g(n)). cg(n) f(n) n=6 69 6 n=20 209 260 n 0 4 48

2-3 - c n 0 0 c g(n) f(n)=(g(n)). f(n) cg(n) c, c 2 n 0 0 c 2 g(n) f(n)=(g(n)). c 2 g(n) f(n) c g( n) n 0 n 0 49 f(n)=3n+3, g(n)=n n f(n)=o(g(n))=o(n) n 3n+ n f(n)=(g(n))=(n) f(n)=o(n) and f(n)=(n) f(n)=(n) f(n)=2n 3 +3n 2 -n+0, g(n)=n 3 n>5 2n 3 +3n 2 - n 3 f(n)=o(n 3 ) n>3 2n 3 +3n 2 - n 3 f(n)=(n 3 ) f(n)=o(n 3 ) and f(n)=(n 3 ) f(n)=(n 3 ) O() O(logn) O(n) O(nlogn) O(n 2 ) O(n 3 ) O(2 n ) O(n!) 0n+9 n 2 /2+3n O(n) O(n 2 ) 5 52 logn n nlogn n 2 n 3 2 n 0 0 2 2 2 4 8 4 2 4 8 6 64 6 () 2 n n 3 n 2 nlog 2 n 3 8 24 64 52 256 n 4 6 64 256 96 636 5 32 60 024 3268 429496296 log 2 n 2 4 8 6 32 64 28 (n) 53 54 ( ) f(n) f(n)=o(g(n)) g(n) g(n) i = ; while (i <= n) x = x + ; i = i + ; int i, j; for (i=; i<=n; i++) for (j=; j<=n; j++) if ( j > i) 3n+2 O(n) O(n 2 ) C[i,j] = [i]*[j]; 56

inarysearch ([], key, left, right) mid = (left + right)/2; 2 if ([mid] = key) return(mid); 3 else if ([mid] > key) inarysearch(, key, left, mid-) 4 else inarysearch(, key, mid+, right); 5 58 (), () T( n) T ( n ) (), (), (2) T( n) T( n ) ( n), (), (3) T( n) T ( n / 2) (), (), (4) T( n) T ( n / 2) ( n), (), (5) T( n) 2T ( n / 2) (), (), (6) T( n) 2T ( n / 2) ( n), n n 2 n n 2 n n 2 n n 2 n n 2 n n 2 T( n) ( n) 2 T( n) ( n ) T( n) (log n) T( n) ( n) T( n) ( n) T( n) ( nlog n) 59 60 2?, 3 4

(stable) ( ),, (in-place) 5 6 [ ] n 0 n- [i-) if i < j then [ii,j-) n [0..n-] 8 20 45 5 35 25 0 (n-)? N Y 9 0 0 20 35 5 0 45 25 5 20 35 0 45 25 2 5 0 35 20 45 25 3 5 0 35 20 45 25 4 5 0 20 35 45 25 5 5 0 20 25 35 45 6 5 0 20 25 45 35 5 0 20 25 35 45 8 5 0 20 25 35 45 9 5 0 20 25 35 45 SelectionSort (int [], int n) for (i = 0; i < n; i++) Min = i; // for (j = i+; j < n; j++) // if ([j] < [Min]) Min = j; // [i] [Min] // [0:i] 2

O(n 2 ) n( n ) : ( n ) ( n 2) 2 5 25 5 25 3 4 20 35 5 0 45 25 20 35 5 0 45 25 20 35 5 0 45 25 20 35 5 0 45 25 20 5 35 0 45 25 20 5 35 0 45 25 5 20 35 0 45 25 5 20 35 0 45 25 0 20 35 5 0 45 25 5 20 35 0 45 25 2 5 0 20 35 25 45 3 5 0 20 35 25 45 4 5 0 20 25 35 45 5 5 0 20 25 35 45 6 5 0 20 25 35 45 5 0 20 25 35 45 8 5 0 20 25 35 45 9 5 0 20 25 35 45 6 _ ubblesort (int [], int n) for (i=n-; i>0; i--) for (j=n-; j>0; j--) if ([j-] > [j]) [j-] [j] _2 ubblesort (int [], int n) OUND = -; do top = n; for (j=top-; j>ound; j--) if ( [j] < [j-] ) [j] [j-] top = j; OUND = top; // [0:top-] while ( top < n ); 8 3 5 9 : O(n) 9 5 3 : O(n 2 ) 9 20

, 20 45 5 25 35 0 2 5 20 0 20 35 5 0 45 25 20 35 5 0 45 25 2 20 35 5 0 45 25 3 20 35 5 0 45 25 4 5 20 35 0 45 25 5 5 0 20 35 45 25 6 5 0 20 35 45 25 5 20 5 0 20 35 45 25 8 5 0 20 25 35 45 9 5 0 20 25 35 45 23 24 InsertionSort (int [], int n) for (i=0; i<n; i++) for (j=i; j>0 && [j] < [j-]; j--) [j] [j-] 3 5 9 9 5 3 : O(n) : O(n 2 ) // [0:i] 25 26 2 28

Donald L. Shell / / 6/2 = 8 8 8 29 _ 8/2 = 4 _ 4/2 = 2 3 32 _ 2/2 = ShellSort (int [], int n) for ( D= n/2; D > ; D= D/2 ) for (i=d; i < n; i++) for (j=i; j >= D && [j] < [j-d]; j=j-d) [j] [j-d] // D 34 O(n 2 ) O(nlogn), D D n/2 i (n=, i=, 2, 3, : D k, D k-,, D < i < k, D i- < D i < D i+ i < j D j D i D =, 4, 3,, 2, 364, 093, 3280, (D i+ =3D i +, D =) (Sedgewick) (Papernov-Stasevic) 35 36

D (D k D k- D ) D 45 45 45 3 2 3 [ ] 23 2 2 24 34 3 3 25 29 35 39 C[ ] [ ] 4 5 8 9 4 8 9 26 2 3 36 3 4 6 0 6 20 28 32 38 42 2 43 45 4 5 _MergeSort() _Merge() Merge ([ ], [ ], n, m) MergeSort ([ ], n) if (n <= ) return; MID = n/2; [0 : MID-] = MergeSort ([0 : MID-], MID); [MID : n] = MergeSort ([MID : n], n-mid); C[0 : n-] = Merge ([0 : MID-], [MID : n], MID, n-mid); return C[0 : n-]; i = j = k = 0; while ( i<n && j<m ) if ( [i] <= [j] ) C[k++] = [i++]; else C[k++] = [j++]; for ( ; i<n; i++) C[k++] = [i]; for ( ; j<m; j++) C[k++] = [j]; return C[0 : n+m-]; 6

Merge() [] + [] C[0:n-] (n) MergeSort(), (C[0:n-]) T(n)=(nlogn) 8 9 n n/2 O(n) C[0:n-] 0 20 35 5 45 0 25 20 35 5 0 45 25 20 35 5 0 45 25 5 0 20 35 45 25 5 0 20 25 35 45 2 3, (pivot) ( ) O(nlogn) O(n 2 ) < < 4

i x >= x < i j j i j i j j i 6 _() i j i j i i j j i j 8 9 _(2) _QuickSort() QuickSort ([ ], n) if (n <= ) return; PIVOT = Partition ([0 : n-], n); QuickSort ([0 : PIVOT-], PIVOT); QuickSort ([PIVOT+ : n-], n-pivot-); return [0 : n-] 20 2 _Partition() Partition ([ ], n) i=; j=n-; while ( i < j ) while ( [i] < [0] && i < n ) i++; while ( [j] >= [0] && j > 0 ) j--; if ( i < j ) [i] [j] else [0] [j] // return j; Partition() (n) i j i j 23

_() QuickSort() T( n) T( ) T( ) ( n) T() () n- 2 n-2 3 n-3 4 n-4 _(2) 3 5 9 9 5 3 : n- 3 5 9 5 3 9 3 5 9 5 3 9 3 5 9 3 5 9 3 5 9 3 5 9 n/2-... n/2+ 3 5 9 3 5 9 n n/2 n/2, 24 25 _(3) _(4), / n/2 : n/2 20 35 25 0 5 0 5 20 25 35 5 0 20 25 35 5 0 20 25 35 log 2 n T(n)=(n 2 ) () 26 2 _(5) T( n) T( n / 2 ) T( n / 2 ) ( n), T() () _(6) O(nlogn) T(n)=(nlogn) 28 29 O(n 2 ) O(nlogn) 3

25 20 25 20 i j 25 20 j i 20 25. 2. 3. 4. 5. 6.. NP- 8. 9. 2. (I) 3. (II), 4. (III),, 32 2 (heap) (). ( 0 6 0 2 3 4 25 35 3 6 6 25 6 9 2 4 0 20 2 3 4 2 3 0 4 9 5 20 6 8 3 8 9 0 8 5 0 0 i 2i+2 2i+ 0 2 3 4 5 6 8 9 0 0 9 20 8 3 8 5 0 j 2. 2. ( ) 5 6

95 95 95 95 95 95 8 2 i = (n-) to Y N 2 2 & 9 0 _ (heap), 2 ( ) 2 () 3 4

(2) (3) 6 (4) (5) 8 (6) () 9 20 (8) 2

_2 _2 _() 23 24 _2 _(2) _2 _(3) 25 26 _2 _(4) _2 _(5)_ 2 28 () 29

_(2) _(3) 3 32 _(4) _(5) 34 _(6) _() 35 36 _(8) _(9) 3 38

_(0) _() 39 _(2) _(3) 4 42 _(4) _() 43 _,, O(nlogn) 45 46

O(n), 4 48 6 8 9 6 8 6 0 5 8 6 0 9 5 6 8 6 : COUNT[ [i] ]++ : 5~0 COUNT 5 6 8 9 0 0 0 0 0 0 0 5 6 8 9 0 8 6 0 9 5 6 8 6 0 0 0 0 0 8 6 0 9 5 6 8 6 5 6 8 9 0 0 0 0 0 5 6 6 6 8 8 9 0 8 6 0 9 5 6 8 6 8 6 0 9 5 6 8 6 5 6 8 9 0 0 0 0 5 6 8 9 0 0 0 5 6 8 9 0 8 6 0 9 5 6 8 6 0 49 _() 5 6 8 9 0 8 6 0 9 5 6 8 6 0 5 6 8 9 0 8 6 0 9 5 6 8 6 2 0 _(2) : [ COUNT[ [i] ] ] = [i], COUNT[ [i] ]-- COUNT 2 3 4 5 6 8 5 6 8 9 0 8 6 0 9 5 6 8 6 4 4 6 8 8 6 0 9 5 6 8 6 5 6 8 9 0 2 0 2 [ COUNT [ [i] ] ] = [i] 8 6 0 9 5 6 8 6 5 6 8 9 0 3 0 2 [ COUNT [ [8] ] ] = [8] : COUNT[i] = COUNT[i] + COUNT[i-] 5 6 8 9 0 3 0 2 [ COUNT [ 6 ] ] = 6 [ 4 ] = 6 COUNT [ [i] ]-- COUNT [ [8] ]-- COUNT [ 6 ]-- 4 4 6 8 2 3 4 5 6 8 3 4 6 8 5 52 _(3) _(4) COUNT 2 3 4 5 6 8 5 6 8 9 0 8 6 0 9 5 6 8 3 4 6 8 COUNT 2 3 4 5 6 8 5 6 8 9 0 8 6 0 9 5 6 3 4 5 8 [ COUNT [ [i] ] ] = [i] [ COUNT [ [i] ] ] = [i] [ COUNT [ [] ] ] = [] [ COUNT [ [6] ] ] = [6] [ COUNT [ 8 ] ] = 8 COUNT [ [i] ]-- [ COUNT [ 6 ] ] = 6 COUNT [ [i] ]-- [ 6 ] = 8 COUNT [ [] ]-- [ 3 ] = 6 COUNT [ [6] ]-- COUNT [ 8 ]-- COUNT [ 6 ]-- 2 3 4 5 6 8 6 3 4 5 8 2 3 4 5 6 8 6 8 2 4 5 8 53 54

_(5) _(6) 2 3 4 5 6 8 5 6 8 9 0 8 6 0 9 5 2 4 5 8 2 3 4 5 6 8 5 6 8 9 0 8 6 0 2 4 5 6 6 6 8 0 2 4 5 8 5 6 6 8 9 0 0 4 5 8 2 3 4 5 6 8 5 6 8 9 0 8 6 0 9 0 2 4 5 8 2 3 4 5 6 8 5 6 8 9 0 8 0 4 5 6 5 6 6 8 0 2 4 5 6 8 5 6 6 6 8 9 0 0 4 4 6 2 3 4 5 6 8 5 6 8 9 0 8 6 0 0 2 4 5 6 8 5 6 6 8 9 0 2 4 5 6 2 3 4 5 6 8 5 6 6 6 8 8 9 0 5 6 8 9 0 0 4 4 6 56 CountingSort ([ ], n) [:n], [:n] MIN = MX = [0]; for (i=; i<n; i++) if ([i] < MIN) MIN = [i]; // if ([i] > MX) MX = [i]; // for (j=min; j <= MX; j++) COUNT[j] = 0; // for (i=; i <= n; i++) COUNT[[i]]++; // for (j=min+; j <= MX; j++) // COUNT[j] = COUNT[j] + COUNT[j-]; for (i=n; i > 0; i--) // [] [] [COUNT[[i]]] = [i]; COUNT[[i]]--; return [:n]; k O(k+n) k=o(n) O(n), COUNT[ ] [ ] 5 58 O(n), 59 60 _ : 6~00 5 8 68 82 65 00 6 95 65 6 68 82 95 00 6~65 ~0 ~5 6~80 8~ 86~90 9~95 96~00 6 82 65 68 95 00 6~65 ~0 ~5 6~80 8~ 86~90 9~95 96~00 6~65 ~0 ~5 6~80 8~ 86~90 9~95 96~00 6 65 68 82 95 00 6 62

ucketsort ([ ], n) MIN = MX = [0]; for (i=; i<n; i++) if ([i] < MIN) MIN = [i]; // if ([i] > MX) MX = [i]; // INTERVL = (MX-MIN+)/n ; for (i=0; i<n; i++) [i] UCKET[([i]-MIN)/INTERVL] ; for (i=0; i<n; i++) UCKET[i] ; UCKET[0] UCKET[n-] return [0 : n-]; n/k (k) UCKET[ ], [ ] 63 64 O(n) 65 2 265 482 95 36 68 00 2 265 482 95 36 68 00 00 36 482 265 95 2 68 00 36 265 68 482 2 95 68 95 00 265 2 36 482 d n O(dn) d O(n) 6 68 O(n 2 ) O(n 2 ) O(n 2 ) O(n 2 ) O(nlogn) O(n 2 ), O(nlogn) : : O(nlogn) O(n) O(n) O(n) 69