計(jì)算機(jī)組成復(fù)習(xí)提綱
1.計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu),核心層為硬件->系統(tǒng)->外層應(yīng)用軟件
2.軟件系統(tǒng)的分類:系統(tǒng)軟件和應(yīng)用軟件.
系統(tǒng)軟件:編譯、os、匯編、應(yīng)用軟件:edit,cad…
3.計(jì)算機(jī)硬件組成:alu(數(shù)據(jù)通路datapath)、存儲器、控制器、輸入、輸出
數(shù)據(jù)通道和控制器稱為cpu或processor
4.機(jī)器指令格式及其分類
分類:算術(shù)運(yùn)算指令、訪問存儲器指令(傳送)、轉(zhuǎn)移指令、移位指令、輸入、輸出指令
格式:無址
三地址
mips指令:三地址與二地址
5.用匯編指令進(jìn)行程序設(shè)計(jì)
g=h+A[i] #寄存器分配
add $t1,$s4,$s4 #i->$s4,i*2->$t1
add $t1,$t1,$t1 #i*4->$t1
add $t1,$t1,$s3 #$s3為A數(shù)組首址,$t1為A[i]的地址
lw $t0,0($t1) #$t0=A[i]的值
add $s1,$s2,$t0 #g=$s1=h+A[i]
詳見英文書p114
循環(huán)程序練習(xí):轉(zhuǎn)移指令應(yīng)用 p126
loop:g=g+A[i];
i=i+j;
if(i!=h) goto loop;
(bne $s3,$s2,loop用法)
while(SAVE[i]==k) P127
i=i+j;
(j loop用法)
case/switch statement P129
switch(k){//其中k取0,1,2,3
case 0:f=i+j;break;
case 1:f=g+h;break;
case 2:f=g-h;break;
case 3:f=i-j;break;
}
用beq,jr,j等指令給編寫,開關(guān)語句要用匯編指令設(shè)計(jì)、編寫,需要一張?zhí)D(zhuǎn)表
k*4+首址(跳轉(zhuǎn)表)
從表中取出跳轉(zhuǎn)表地址
6.尋址方式
lw $t1,0($t2) #基地址尋址
add $t1,$t2,$t3 #寄存器尋址
addi $t1,$t2,100b #立即
beq $t1,$t2,l1 #pc相對尋址
j mm #j型尋址,相當(dāng)于直接存儲尋址
jr $t #寄存器尋址
重點(diǎn)掌握尋址方式、常用指令用于循環(huán)、當(dāng)循環(huán)和開關(guān)語句匯編程序編程方法
計(jì)算機(jī)組成復(fù)習(xí)提綱
1.計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu),核心層為硬件->系統(tǒng)->外層應(yīng)用軟件
2.軟件系統(tǒng)的分類:系統(tǒng)軟件和應(yīng)用軟件.
系統(tǒng)軟件:編譯、os、匯編、應(yīng)用軟件:edit,cad…
3.計(jì)算機(jī)硬件組成:alu(數(shù)據(jù)通路datapath)、存儲器、控制器、輸入、輸出
數(shù)據(jù)通道和控制器稱為cpu或processor
4.機(jī)器指令格式及其分類
分類:算術(shù)運(yùn)算指令、訪問存儲器指令(傳送)、轉(zhuǎn)移指令、移位指令、輸入、輸出指令
格式:無址
三地址
mips指令:三地址與二地址
5.用匯編指令進(jìn)行程序設(shè)計(jì)
g=h+A[i] #寄存器分配
add $t1,$s4,$s4 #i->$s4,i*2->$t1
add $t1,$t1,$t1 #i*4->$t1
add $t1,$t1,$s3 #$s3為A數(shù)組首址,$t1為A[i]的地址
lw $t0,0($t1) #$t0=A[i]的值
add $s1,$s2,$t0 #g=$s1=h+A[i]
詳見英文書p114
循環(huán)程序練習(xí):轉(zhuǎn)移指令應(yīng)用 p126
loop:g=g+A[i];
i=i+j;
if(i!=h) goto loop;
(bne $s3,$s2,loop用法)
while(SAVE[i]==k) P127
i=i+j;
(j loop用法)
case/switch statement P129
switch(k){//其中k取0,1,2,3
case 0:f=i+j;break;
case 1:f=g+h;break;
case 2:f=g-h;break;
case 3:f=i-j;break;
}
用beq,jr,j等指令給編寫,開關(guān)語句要用匯編指令設(shè)計(jì)、編寫,需要一張?zhí)D(zhuǎn)表
k*4+首址(跳轉(zhuǎn)表)
從表中取出跳轉(zhuǎn)表地址
6.尋址方式
lw $t1,0($t2) #基地址尋址
add $t1,$t2,$t3 #寄存器尋址
addi $t1,$t2,100b #立即
beq $t1,$t2,l1 #pc相對尋址
j mm #j型尋址,相當(dāng)于直接存儲尋址
jr $t #寄存器尋址
重點(diǎn)掌握尋址方式、常用指令用于循環(huán)、當(dāng)循環(huán)和開關(guān)語句匯編程序編程方法
7.?dāng)?shù)組與指令+編程設(shè)計(jì)(了解編程方法) P174
基于MIPS架構(gòu)CPU及指令設(shè)計(jì)不要求
8.機(jī)器數(shù)的表示,補(bǔ)碼,原碼和標(biāo)準(zhǔn)的浮點(diǎn)數(shù)表示及運(yùn)算
重點(diǎn)掌握串行加法、并行進(jìn)行加法的設(shè)計(jì),及進(jìn)位時(shí)間的計(jì)算,并行進(jìn)位鏈及串行進(jìn)位的電路的設(shè)計(jì)方法,補(bǔ)碼,浮點(diǎn)數(shù)表示(IE754標(biāo)準(zhǔn))
原碼乘法器(除法器)補(bǔ)碼的設(shè)計(jì)原理及原理及邏輯框圖設(shè)計(jì)
補(bǔ)碼乘法,一位Booth’s P259,P257,加減交替法
IEEE 754標(biāo)準(zhǔn):
e=E-127 e:真值 E:機(jī)器表示(移碼)
1 8 23
E用移碼表示,其中1位符號位
(-1)S×(1+Significant)×2E
|M|=0.1XX......
9.掌握多時(shí)鐘周期計(jì)算機(jī)數(shù)據(jù)通路的結(jié)構(gòu),掌握指令執(zhí)行過程(能畫出指令執(zhí)行的狀態(tài)轉(zhuǎn)換圖)
了解位程序的設(shè)計(jì)方法和基本工作原理
10.存儲系統(tǒng)的體系結(jié)構(gòu),多級存儲系統(tǒng)Cache----直接地址映射或組相聯(lián)地址映射,全相聯(lián)地址映射,地址映射的原理設(shè)計(jì)
虛擬地址、實(shí)地址、頁表、頁表寄存器,含義必須搞清楚,能計(jì)算頁表容量=頁表單元數(shù)×(標(biāo)志位+實(shí)頁號位長)
虛頁號數(shù)=虛擬地址-頁內(nèi)地址 P545-549,P569-570
缺頁中斷、命中、失效,寫通,回寫術(shù)語概念
重點(diǎn)掌握抵制變換結(jié)構(gòu)的工作原理,變換邏輯設(shè)計(jì)及給定虛地址,主存容量,頁面大小,能計(jì)算,頁表單元數(shù),實(shí)頁號長度,實(shí)地址位數(shù)及尋找到的實(shí)頁號
段表不要求
11.I/O系統(tǒng)
磁盤系統(tǒng),平均旋轉(zhuǎn)時(shí)間,平均尋道時(shí)間
記錄格式,地址表示:頭號(頁號),道號,扇區(qū)號
串行接口,并行接口(按位寬傳輸分)
中斷分類,中斷處理過程,中斷請求,中斷響應(yīng),中斷處理,中斷返回,中斷屏蔽,開/關(guān)中斷概念,多重中斷
英文版P647-649
按控制方式分:
程序控制查詢接口
程序控制中斷方式,軟件排隊(duì)找中斷源,矢量中斷找中斷源
DMA 直接存儲器接口訪問控制
通道 接口編址方式:單獨(dú)編址方式(存儲器統(tǒng)一編址)
重點(diǎn)掌握:向量中斷,中斷響應(yīng),執(zhí)行中斷隱指令,中斷處理,中斷返回等詳細(xì)過程
英文版:第8章
王愛英:P332,P338 338-343
中斷隱指令
題型:名詞解釋,計(jì)算題,若需要也可畫圖,編程(總分不少于30分)
友情提示:
Computer Organization&Design The Hardware/Software Interface(2th Edition)機(jī)械工業(yè)出版社 ,即為文中所指英文版,為本校教學(xué)用書。
復(fù)習(xí)時(shí)應(yīng)該以英文版為主,再輔以其它中文參考書即可,另請參考往年試題。
操作系統(tǒng)原理復(fù)習(xí)(40分,選擇題與主觀題)
linux系統(tǒng)可作為實(shí)例分析
進(jìn)程管理、存儲管理、文件管理
第一部分:1 操作系統(tǒng)的概念
resource management (cpu,memory,i/o derice)資源管理
control of programme execution (schedule,dispatch,etc.)程序控制
user interface (system call,shell,gui)用戶接口
選擇題可考
2 os發(fā)展
simple batch system
系統(tǒng)逐個運(yùn)行作業(yè)(job),但操作員可以成批提交
multi-pregramme batch system
系統(tǒng)中存在多個作業(yè),需要進(jìn)行作業(yè)調(diào)度
time-sharing system (windows,unix,linux etc.)
各用戶能分享計(jì)算機(jī)資源
強(qiáng)調(diào)公平性(faimess)
系統(tǒng)設(shè)計(jì)的主要目標(biāo):①縮短響應(yīng)時(shí)間(response time);
②提高吞吐量 (throughout);
可考選擇題
real-time system
滿足應(yīng)用的實(shí)時(shí)性要求 (有的系統(tǒng)取消虛存來提高速度)
distributed system,embeded system
(兩頭發(fā)展,一頭大,一頭小)
3 os的典型體系結(jié)構(gòu)
monolithic(整體結(jié)構(gòu),單塊結(jié)構(gòu)) :dos
layerd(層次結(jié)構(gòu))
micro-kernel(微內(nèi)核結(jié)構(gòu)) ㈠優(yōu)點(diǎn):1:擴(kuò)充性好
2:內(nèi)核子
3:不容易崩潰
㈡缺點(diǎn):1:有可能速度偏慢
2:設(shè)計(jì)有困難
module 結(jié)構(gòu)來克服linux 單塊結(jié)構(gòu)的弊端
4 現(xiàn)代操作系統(tǒng)
micro-kernel
multi-threading
multi-processor support
distributed os support
object-oriented desigh
virtual machine(如在windows上做linnx 的虛擬機(jī))
real-time characteristics (solaris做的較好)
這些特點(diǎn)愈加明顯,
5 操作系統(tǒng)的硬件支持
inside cpu:register,MMU,cache
interrupt
DMA
cache
第二部分 進(jìn)程管理
進(jìn)程
process-a programme in execution(并不意味著一個占用cpu在執(zhí)行)
如:text section,data section,stack,current actirity.
進(jìn)程是動態(tài)的。有生命的。主動的
進(jìn)程是os 中資源擁有的基本單位(unit of responce ownership)
虛地址空間,內(nèi)有及其他資源(i/o設(shè)備。文件等)
進(jìn)程控制塊(pcb)的管理:各種隊(duì)列
如linnx用鏈?zhǔn)疥?duì)列
進(jìn)程的狀態(tài)
如:running,ready,wait, stopped, swapped, zombie
( 暫停)(一部分或全部調(diào)出)(僵死,進(jìn)程執(zhí)行完了,但
pcb還存在,進(jìn)程還沒消亡)狀態(tài)遷移圖
線程(thread)
線程式是調(diào)度的基本單位(unit of dispatching)
進(jìn)程中的線程共享進(jìn)程資源,但擁有私有堆棧及線程控制塊(tcb,存儲寄存器值,優(yōu)先級及其他線程狀態(tài)信息)
①用戶級線程(ult:user-level thread)
用戶自己管理,但操作系統(tǒng)提供一個庫(library) 幫助,這個進(jìn)程跟操作沒關(guān),os 不知道 不一定操作系統(tǒng)給,可自己寫
操作系統(tǒng)調(diào)度的單位是進(jìn)程,但如一個線程阻塞則整個阻塞 ,無法用多處理器
eg :posix thread (pthread)
②核心級線程
應(yīng)用程序通過api調(diào)用核心線程管理例程(kernel thread facility) 來管理
需要進(jìn)行模式切換
需os 調(diào)度的基本單位(不同線程式可以在多處理上運(yùn)行,一個阻塞不會導(dǎo)致整個進(jìn)程阻塞)
eg:windows thread
并發(fā)控制:互斥與同步
臨界資源(critical resource)
一次只能有一個進(jìn)程訪問的資源
臨界區(qū)(critical section)
訪問臨界資源的代碼段(cs)
在一個時(shí)刻只有一個進(jìn)程在臨界區(qū),為了保證只有一個進(jìn)程在訪問臨界資源
互斥(mutual exclusicn)
在一個時(shí)刻最多一個進(jìn)程在臨界
同步
協(xié)調(diào)需要訪問臨界資源的進(jìn)程,否則會導(dǎo)致race condition(競爭條件)
例:p0,p1習(xí)題課后
最大值?最小值? 。玻保埃
two processes=p0,p1
shared variable int talty:=0
p0p1
臨界區(qū)
①兩個前提:
a.對處理器及各進(jìn)程的相對速度(不會是的速度)不應(yīng)有任何假設(shè);
b.進(jìn)程在臨界區(qū)停留時(shí)間有限
②三個必須:
互斥(mutual exclusion)
有空讓進(jìn):若沒有進(jìn)程在臨界區(qū),則應(yīng)該讓申請進(jìn)入臨界區(qū)的進(jìn)程中的一個立即進(jìn)入
有限等待(bounded waiting):申請進(jìn)入臨界區(qū)的進(jìn)程不會無止境的等待(即不會有饑餓現(xiàn)象)
1.軟件方法
、倮赫n后習(xí)題
shared variables
boolean flag[2];//初始flase
int turn;//初始化0
Process Pi
do{
flag[i]=true;
while(turn≠i)
{while(flag[j]);
turn=i;
}
flag[i]=false;
}while(1)
此算法正確嗎?
不能保證互斥
②Dekker算法:算法不直觀,只能解決二個進(jìn)程問題
Peterson算法:直觀,只能解決二個進(jìn)程問題
Backery算法(面包房算法)
2.利用硬件支持
中斷屏蔽:代價(jià)大,無法做到程序的交*執(zhí)行;多處理機(jī)無法實(shí)現(xiàn)
特殊機(jī)器指令
Test and Set instruction
Exchange instruction
優(yōu)點(diǎn):適合多處理器環(huán)境、簡單
缺點(diǎn):必須忙等待,可能導(dǎo)致餓死
3.信號量
①數(shù)據(jù)結(jié)構(gòu)
Count integer:>=0,表示可用資源數(shù)
<=0,絕對值表示掛起的起程數(shù),初始化非負(fù)
②操作(是原語primitive)
wait(s) (即P):等待資源
siginal(s) (即V):釋放資源
③二元信號量
不能判斷有沒有掛起進(jìn)程
④producer consumer problem
緩沖區(qū)無限
緩沖區(qū)有限 wait操作肯定不能換
生產(chǎn)者消費(fèi)者變換:寫滿時(shí)才能讀,如何實(shí)現(xiàn)?
四、并發(fā)控制:死鎖問題
死鎖(deadlock)
系統(tǒng)存在一個進(jìn)程集合,該集合中的每個進(jìn)程都在等待被集合中的其它進(jìn)程占用的資源
死鎖發(fā)生的4個必要條件
①互斥(mutual exclusion)
②保持等待(hold and wait):保持等待,申請資源時(shí)擁有其他資源
③No preemption(非剝奪)
④Circular wait(循環(huán)等待):若各類資源數(shù)均為1,一定死鎖
dead lock prevention 死鎖預(yù)防
間接預(yù)防:阻止Mutual exclusion,Hold and wait及No preemption都滿足
直接預(yù)防:阻止Circular waut的發(fā)生
一種可行的方法:有序申請法(對所有資源類別編號,進(jìn)程申請按序進(jìn)行)
例:哲學(xué)家就餐問題,筷子編號,先拿編號小的,再滿足大的
dead lock avoidance死鎖避免
進(jìn)程申請資源時(shí),決定是否應(yīng)該滿足
必須預(yù)先知道每個進(jìn)程需要的各類資源數(shù)
銀行家算法:若新的狀態(tài)是安全的,則滿足它
Safe State:從此狀態(tài)出發(fā),存在某種執(zhí)行序列(安全序列),可以使所有進(jìn)程執(zhí)行完畢,不安全狀態(tài)不一定導(dǎo)致死鎖。
Dead lock Detection 死鎖檢測
已知目前各進(jìn)程占用資源數(shù)和申請資源數(shù),判斷當(dāng)前是否發(fā)生死鎖,方法是給每個進(jìn)程做標(biāo)記(mark)
五、進(jìn)程調(diào)度(CPU Scheduling)
1.調(diào)度準(zhǔn)則
用戶角度:
①響應(yīng)時(shí)間
②周轉(zhuǎn)時(shí)間
系統(tǒng)角度:
①CPU利用率
②公平性
③吞吐量
2.調(diào)度模式
①Non-preemptive 非剝奪
進(jìn)程一旦被調(diào)度,則執(zhí)行至結(jié)束或不能繼續(xù)執(zhí)行(如因發(fā)起I/O操作而等待)
②preemptive 可剝奪
3.調(diào)度算法(了解一下剝奪非剝奪的)
①FCFS:先來先服務(wù),直到結(jié)束(非剝奪)
②RR:Round Robin(除了它,其它的都基于優(yōu)先級)
③SPN:最短作業(yè)優(yōu)先,shortest process next
如沒有給出時(shí)間,則要預(yù)測執(zhí)行時(shí)間,如指數(shù)平均法
④SRN:最短時(shí)間優(yōu)先 shortest remaining next
⑤HRRT:最高響應(yīng)比優(yōu)先
⑥FeedBack::反饋調(diào)度
⑦Fair-share scheduling 公平調(diào)度(Unix系統(tǒng)中)
a.多用戶系統(tǒng)中,用戶分組,每個組公平地享有CPU preemptive
b.進(jìn)程數(shù)多的組,各進(jìn)程享有CPU的時(shí)間相對較少
第三部分 存儲管理
1.基礎(chǔ)知識
①各種基本概念
②MMU
CPU Package
CPU MMU
邏輯地址變換為物理地址
2.連續(xù)存儲分配:分區(qū)(Partition)
按內(nèi)存分為若干分區(qū),每個分區(qū)一個進(jìn)程,以支持多道程序
......
3.分頁(paging)
硬件支持:TLB,MMU...
每個進(jìn)程一張頁表
OS維護(hù)一張free-frame list
地址變換圖
頁表管理:
①分級法
②哈希頁表法
③倒置頁表(一個系統(tǒng)只有一個,可以節(jié)省空間,但速度慢)
POWERPC等就用到
4.分段
類似于連續(xù)存儲分配中的動態(tài)分區(qū),但有區(qū)別,段與段可以不連續(xù)
地址變換圖
5.段頁式
如80386地址變換圖
第四部分 虛擬存儲
進(jìn)程的虛地址空間
1.頁裝入策略(page fetch policy)
a). Demand Paging(按需調(diào)頁):普通用
b). Prepare(預(yù)取):Demand Paging的優(yōu)化,發(fā)生缺頁時(shí),將該頁及臨近頁一起裝入
(因?yàn)榫植啃裕?BR>
2.頁替換策略
①Optimal:最優(yōu)化方法
②FIFO:最先裝入的被換出,得*隊(duì)列實(shí)現(xiàn)
③LRU:最久未用的頁被換出(基于locality,很有效)
④Clock policy:時(shí)鐘算法,LRU不易實(shí)現(xiàn),用它來近似模擬
Belady’s Anomaly(Belady異態(tài)):內(nèi)存分配大反而缺頁率高,F(xiàn)IFO可能出現(xiàn)
⑤修改的Clock算法
3.抖動
進(jìn)程缺頁率過高,可用如下方法加以解決:
①優(yōu)化算法
②提供更高速的交換設(shè)備
③增加內(nèi)存
④減少進(jìn)程數(shù)
Windows NT有一個工作集的方法
4.交換
實(shí)現(xiàn)虛擬存儲的重要手段
擴(kuò)大內(nèi)存,可使系統(tǒng)運(yùn)行比內(nèi)存大的程序
交換空間
交換設(shè)備的管理
Swap cache
第五部分 文件系統(tǒng)與I/O管理
1.文件系統(tǒng)
文件分類
文件磁盤空間分配
文件控制塊FCB
目錄文件:存儲目錄下文件的信息(名字,F(xiàn)CB索引信息)
樹型結(jié)構(gòu)的文件系統(tǒng)
文件訪問權(quán)限:
UNIX中的文件的三類用戶:User,group,other
進(jìn)程的uid和gid
2.文件系統(tǒng)空閑磁盤空間管理
位向量法
鏈接法
成組鏈接法:UNIX中用
索引法
UNIX文件系統(tǒng),Linux文件系統(tǒng) linux:
UNIX:i-node(索引節(jié)點(diǎn))
3.I/O管理
I/O設(shè)備分類
Buffer
I/O buffering(緩沖):
①解決CPU與I/O速度匹配
②解決數(shù)據(jù)傳輸大小匹配
③提高I/O的存取
④直接由OS管理
Buffer與Cache的區(qū)別
磁盤調(diào)度
......
友情提示:新的招生簡章上的列出的操作系統(tǒng)參考書即為通常所說的恐龍書,然后還有一本W(wǎng)illiam Stallings的也可以參考,時(shí)間不夠可以參考這本書的中文版(第四版,電子工業(yè)出版社出版),恐龍書好像目前市面上是沒有中文版的,其實(shí)看起來很容易懂得,耐心點(diǎn)好了!
^_^
數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)
第一部分 數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)大綱
復(fù)習(xí)目標(biāo)
1) 掌握基本數(shù)據(jù)結(jié)構(gòu)的概念及其應(yīng)用,2) 如:堆棧、隊(duì)列、鏈表、樹、堆、圖等
3) 掌握基本的sorting,Hashing和Searching算法
基本考試類型
證明題(如樹的特性)出題概率不高
填空題 可能會有英文書的例子
問答題(含數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法結(jié)構(gòu)等)
如圖的表示方法、最小生成樹、最短路徑等
編程題(含算法設(shè)計(jì))
注意思路清晰
數(shù)據(jù)結(jié)構(gòu)的基本要素
鏈表
單向鏈表,雙向鏈表、循環(huán)單雙向鏈表、廣義表
隊(duì)列、堆棧:循環(huán)條件判斷、數(shù)組表示
樹
i. 樹的二*樹表示
ii. 二*樹的特性(層次、結(jié)點(diǎn)等)
iii. 二*樹的表達(dá)
iv. 二*樹的周游(如已知先、中序,v. 求后序)
vi. 線索二*樹(如已知中序線索,vii. 求遍歷)、哈夫曼樹
viii. 堆(Heap)---用數(shù)組表達(dá),ix. 基本操作(插入、刪除)
x. 二*搜索樹(查找樹)
xi. 森林(森林的二*樹表達(dá))
出題層次類型:
▲三種基本類型(線性表、樹、圖)的對象定義與操作實(shí)現(xiàn)---屬于概念層次
▲應(yīng)用問題(如最短路徑)---屬于方法層次
▲查找與排序---屬于算法層次
查找:①靜態(tài)查找(順序、二分)
②動態(tài)查找(查找樹、哈希)
查找樹:平衡樹,B+樹,B-樹)
排序:①選擇排序......堆排序
②交換排序......快速排序
③插入排序......SHELL排序
圖
1) 圖的定義和表達(dá)(4種基本表達(dá)方法)
2) 圖的操作:深度遍歷、廣度遍歷、連通分量、生成樹等
3) 最小生成樹(兩種算法)
4) 最短路徑
迪杰斯特算法、動態(tài)規(guī)劃法
5) AOV、AOE網(wǎng)
典型例子:拓?fù)渑判、求關(guān)鍵路徑
排序
i. 插入
ii. 快速
iii. 歸并
iv. 堆
v. 拓?fù)?BR>vi. 基數(shù)
查找
Hashing(構(gòu)造、沖突解決)
最優(yōu)二*查找樹(概念即可)
AVL樹(四種情況,如何維護(hù)即可)--->B+樹
算法設(shè)計(jì)基本方法
回溯法
分治法(典型例子:歸并排序)
貪心法(如:選擇排序)
動態(tài)規(guī)劃法
第二部分 復(fù)習(xí)內(nèi)容
一、鏈表
1.單向鏈表就地逆轉(zhuǎn)
q0 q1
q0 q1 q2
while(q1!=Null){
q2=q1->next;
q1->next=q0;
q0=q1;
q1=q2;}
初始:q0=Null
q1=L->next
廣義鏈表
二、堆棧和隊(duì)列
循環(huán)隊(duì)列(判斷滿和空條件)
三、樹
樹的二*樹表達(dá)
二*樹的特性
a) 第i層二*樹最多節(jié)點(diǎn)數(shù) 性質(zhì)1
b) 深度為k的二*樹最多節(jié)點(diǎn)數(shù) 性質(zhì)2
c) 性質(zhì)3(向上邊的角度與向下邊的角度結(jié)合
d) 2i,2i+1......
數(shù)組表示二*樹
二*樹的遍歷
遍歷算法
由前/中(后/中)推導(dǎo)后(或前)來構(gòu)造樹
線索二*樹(加了一個結(jié)點(diǎn),為了方便遍歷實(shí)現(xiàn))
中序線索(用此來實(shí)現(xiàn)遍歷)
給出一棵樹線索化
堆
插入元素、刪除元素的算法
四、圖
1.圖的表示方法
數(shù)組表示:矩陣表示法(有向/無向)
鄰接表(逆鄰接表)表示法(有向/無向)
十字鏈表(有向)
多重鏈表(無向)
2.圖的操作
深度搜索、廣度搜索
最小生成樹
a) Kruskal算法
b) Prim算法
最短路徑
AOV和AOE
拓?fù)渑判、關(guān)鍵路徑
五、排序
插入排序,基本插入排序方法,希爾排序
交換排序:基本交換排序(冒泡、快速排序)
歸并排序:循環(huán)、遞歸
選擇排序:堆排序
快速排序(算法思想)
兩種思路:①單向掃描;②雙向掃描
堆排序
Adjust(從n/2開始調(diào),保證左邊是堆,右邊是堆,往上調(diào))
六、查找
1.Hashing
基本思想
構(gòu)造方法
沖突解決(開放地址、線性探測、鏈表)
鏈表(關(guān)于其操作來實(shí)現(xiàn)沖突解決)
exp. Insert_LinkHashing(...)
2.AVL樹
首先判別各種平衡旋轉(zhuǎn)方法(找平衡因子被破壞的及誰破壞它的)
實(shí)現(xiàn)旋轉(zhuǎn)來維護(hù)(簡單的就是旋轉(zhuǎn)后滿足排序二*樹)
友情提示:一般參考嚴(yán)版的書和習(xí)題就可以了,另外最好把上課用的英文課件下來看看,可能有算法填空題會從中間出的。^_^