《資料結構c 》 第十二章

2021-09-25 05:01:40 字數 1062 閱讀 5231

目錄

排序演算法 快排

選取與中位數 眾數

歸併向量的中位數

k-選取問題

希爾排序(shellsort)

快排與歸併的區別:兩者均屬於分治演算法 ,然而歸併是歸併需要o(n),快排是問題劃分需要o(n)。快排的問題在於劃分出來的子問題並不一定均衡,其最壞情況下o(nlogn)的複雜度,然而其大多數情況下效能均強於別的排序演算法。

思路:選取乙個pivot,使得pivot將陣列分為兩個部分,pivot前的均小於pivot,後的均大於pivot

陣列 【lo,hi】->選取pivot,從兩端交替比較與pivot的大小,將pivot放在其應該的位置上,返回這個位置mi->將遠問題分解為[lo,mi]&[mi+1,hi]->直到hi-lo<2終止。

int  partition(vector& xx, int lo, int hi)

a中有一半以上的元素數值都是m,則m為a的眾數。

思路:選出候選眾數maj

核實maj是否為眾數

int maj_find(vectora)

else

}return maj;

}bool maj_check(vectora, int maj)

bool maj_fun(vectora, int & maj)

歸併兩個有序向量時候,可以比較兩個向量的中間元素大小,可將問題規模減半。遞迴深度不超過logn 時間複雜度o(logn)

構建n大小的小頂堆,經過k次dlmin,o(n)+ko(logn)

任取k個構建大頂堆,依次插入後維護,o(k)+2(n-k)o(logk)

構建乙個n-k的小頂堆,k的大頂堆,然後反覆比較堆頂元素o(n-k)+o(k)+min(k,n-k)*2*(o(lgk+lg(n-k)))

將a->b

b[i][j]=a[iw+j]

w1將a分為w1列,然後逐行排序,排完之後再將其分為w2。。。。迭代直到w>size

shell序列[w1,w2,w3...]盡量互為素數

第十二章 檔案

文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...

第十二章 dp

動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...

第十二章 異常

一 異常的概念 錯誤 編譯器 異常 執行期,程式沒有正常按照期望執行 異常產生時,在對應位置產生異常型別物件,程式 暫停 如果上下文有異常處理程式,對應處理 沒有則 異常向上傳播 報錯退出 異常向上傳播 如果異常在函式中產生,會傳播給函式的呼叫者 如果異常在模組的頂級位置,會傳播給引用該模組的模組 ...