算法設(shè)計(jì) 考研題

上傳人:daj****de2 文檔編號(hào):142463336 上傳時(shí)間:2022-08-25 格式:DOCX 頁(yè)數(shù):1 大小:11.58KB
收藏 版權(quán)申訴 舉報(bào) 下載
算法設(shè)計(jì) 考研題_第1頁(yè)
第1頁(yè) / 共1頁(yè)

最后一頁(yè)預(yù)覽完了!喜歡就下載吧,查找使用更方便

10 積分

下載資源

資源描述:

《算法設(shè)計(jì) 考研題》由會(huì)員分享,可在線閱讀,更多相關(guān)《算法設(shè)計(jì) 考研題(1頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、1. 帶權(quán)圖的最短路徑問(wèn)題是找出 沖初始頂點(diǎn)到目標(biāo)頂點(diǎn)之間的一 條最短路徑,假設(shè)從初始頂點(diǎn)到目 標(biāo)頂點(diǎn)之間存在路徑,現(xiàn)有一種解 決該問(wèn)題的方法:1)該最短路徑 初始時(shí)僅包含初始頂點(diǎn),令當(dāng)前頂 點(diǎn)u為初始頂點(diǎn);2)選擇離u最 近且尚未在最短路徑中的一個(gè)頂 點(diǎn)▼,加入到最短路徑中,修改當(dāng) 前頂點(diǎn)u=v; 3)重復(fù)(2),直到 u是目標(biāo)頂點(diǎn)時(shí)為止。請(qǐng)問(wèn)上述方 法能否求得最短路徑?若可行證 明,否舉例。 不能。如下圖,括號(hào)中的是權(quán)(路 徑長(zhǎng)度),頂頂是點(diǎn),從0到3, 如果按照貪心法,將走0-2-3,而 實(shí)際最短為0-1-3。 0——(10)——2 I (2) I 1 (2) 3 2. 已

2、知一個(gè)帶有表頭結(jié)點(diǎn)的單鏈 表:假設(shè)該鏈表只給出了頭指針 list,在不改變鏈表的前提下,設(shè) 計(jì)一個(gè)盡可能高效的算法,查找鏈 表中倒數(shù)第K個(gè)位置上的結(jié)點(diǎn)(K 為正整數(shù)),若成功,算法輸出該 結(jié)點(diǎn)的data域的值,并返回1;否 則只返回0。要求:1)描述算法的 基本設(shè)計(jì)思想;2)描述步驟,給 出簡(jiǎn)要注釋。 增加2個(gè)指針變量和一個(gè)整型變 量,從鏈表頭向后遍歷,其中指針 p指向當(dāng)前遍歷的結(jié)點(diǎn),指針p1指 向P1所指向結(jié)點(diǎn)的前k個(gè)結(jié)點(diǎn), 如果p之前沒(méi)有k個(gè)結(jié)點(diǎn),那么p1 指向表頭結(jié)點(diǎn)。用整型變量i表示 當(dāng)前遍歷了多少個(gè)結(jié)點(diǎn),當(dāng)i>k 時(shí),p1隨著每次的遍歷,也向請(qǐng)移 動(dòng)一個(gè)結(jié)點(diǎn)。則遍歷完成時(shí),p

3、1或 者指向表頭結(jié)點(diǎn),或者指向鏈表中 倒數(shù)第k個(gè)位置上的結(jié)點(diǎn)??臻g3, 時(shí)間n p=list->link; p1=list; i=1; while (p) { p=p->link; i++; if (i>k) p1=p1->next; } if (p1==list) return 0; else { printf("%d\n", p1->data); return 1; } 3設(shè)將n(n,1)個(gè)整數(shù)存放到一維數(shù) 組R中,試設(shè)計(jì)一個(gè)在時(shí)間和空間 兩方面盡可能有效的算法,將R中 保有的序列循環(huán)左移P(0

4、為(Xp Xp+1 Xn-1 X0 X1 Xp-1) 要求:1)給出算法的基本設(shè)計(jì)思 想。2)表述算法,給出注釋。3)說(shuō) 明你所設(shè)計(jì)算法的時(shí)間復(fù)雜度和 空間復(fù)雜度 分析:時(shí)間復(fù)雜度為O(n),空間復(fù) 雜度為O(1) (1) 當(dāng) n%p==0 時(shí),可以做 p*(n/p) 次搬運(yùn),具體的說(shuō)就是每一趟搬運(yùn) 的是等價(jià)類(lèi),做p次。2)當(dāng)n%p!=0 時(shí),做 n 次 a[(j+p)%n]=a[j] 代碼 void move_p_steps(int a[],int n,int p){ int i,j,temp,temp1; if(n%p==0){ for(i=0;i

5、a[n-1-i]; for(j=n-1-i-p;0<=j;j-=p) a[j+p]=a[j]; a[(n-1-i+p)%n]=temp;}} else{j=0;temp=a[0]; for(i=0;i

6、6, 8, 20),則 S1 和 S2 的中位數(shù)是11?,F(xiàn)有兩個(gè)等長(zhǎng)升序 序列A和B,試設(shè)計(jì)一個(gè)在時(shí)間和 空間兩方面都盡可能高效的算法, 找出兩個(gè)序列A和B的中位數(shù)。要 求:1)給出算法的基本設(shè)計(jì)思想。 2)根據(jù)設(shè)計(jì)思想,描述算法,關(guān)鍵 之處給出注釋。3)說(shuō)明你所設(shè)計(jì)算 法的時(shí)間復(fù)雜度和空間復(fù)雜度。 (1)分別求兩個(gè)升序序列A和B的 中位數(shù),設(shè)為a和b。 如果a=b,則a或者b即為所 求的中位數(shù)。 原因:如果將兩序列歸并排 序,則最終序列中,排在子序列ab 前邊的元素為先前兩序列中排在a 和b前邊的元素;排在子序列ab后 邊的元素為先前兩序列a和b后邊 的元素。所以子序列ab 一定位于

7、 最終序列的中間,有因?yàn)閍=b,顯 然a就是中位數(shù)。 如果a#b(假設(shè)a 原因:同樣可以用歸并排序后 的序列來(lái)驗(yàn)證,歸并后排序后必然 有形如…a“?b…的序列出現(xiàn),中位 數(shù)必然出現(xiàn)在(a,b)范圍內(nèi)。因此 可以做如下處理:舍棄a所在序列 A之中比較小的一半,同時(shí)舍棄b 所在序列B之中比較大的一半。在 保留的兩個(gè)升序序列中求出新的 中位數(shù)a和b,重復(fù)上述過(guò)程,直 到兩個(gè)序列只含一個(gè)元素為止,則 較小者即為所求中位數(shù)。 (2) int Search(int A[], int B[], int n) {int s1,e1,mid1,s2,e2,mid2; s1=0;e1=n-1;s2=1;e

8、2=n-1; while(s1!=e1||s2!=e2) {mid1=(s1+e1)/2;mid2=(s2+e2)/ 2; if(A[mid1]==B[mid2])return A[mid1]; if(A[mid1] {//分別考慮奇數(shù)和偶數(shù),保 持兩個(gè)子數(shù)組元素個(gè)數(shù)相等一 if((s1+e1)%2==0)//若元素 個(gè)數(shù)為奇數(shù) {s1=mid1;//舍棄A中間點(diǎn)以 前部分且保留中間點(diǎn) e2=mid2; //舍棄B中間點(diǎn)以 后部分且保留中間點(diǎn) }else//若元素個(gè)數(shù)為偶數(shù) {s1=mid1+1;//舍棄A中間點(diǎn) 以前部分且保留中間點(diǎn) e2=mid2; //舍棄B中間點(diǎn)以 后

9、部分且保留中間點(diǎn) }}else{if((s1+e1)%2==0)// 若元素個(gè)數(shù)為奇數(shù)個(gè) {e1=mid1;//舍棄A中間點(diǎn)以 后部分且保留中間點(diǎn) s2=mid2;//舍棄B中間點(diǎn)以前 部分且保留中間點(diǎn) }else //若元素個(gè)數(shù)為偶數(shù)個(gè) {e1=mid1+1;//舍棄A中間點(diǎn) 以后部分且保留中間點(diǎn) s2=mid2;//舍棄B中間點(diǎn)以前 部分且保留中間點(diǎn) }}}return (A[s1]} (3) 上述所給算法的時(shí)間、空間復(fù) 雜度分別是O(log2n)和O(1)。 因?yàn)槊看慰偟脑貍€(gè)數(shù)變?yōu)樵瓉?lái) 的一半,所以有: 第一次:元素個(gè)數(shù)為 n/2=n/(21) 第二次:元素個(gè)數(shù)為 n/4=n/(22) 第k次:元素個(gè)數(shù)為n/(2k) 最后元素個(gè)數(shù)為2 則有 n/(2k)=2 解得 k= log2n - 1 因此:時(shí)間復(fù)雜度為 O(log2n),而空間復(fù)雜度從上述程 序中可看出為O(1)。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!