1、輾轉相除法的時間複雜度是o(lgn)
用輾轉相除法
(即歐幾里得
演算法)求兩個正整數的最大公約數
:設兩個數m,n,假設m>=n,用m除以n,求得餘數q。若q為0,則m為最大公約數
;若q不等於0,則進行如下迭代
:m=n,n=q,即原除數變為新的被除數
,原餘數變為新的除數重複演算法,直到餘數為0為止。餘數為0時的除數n,即為原始m、n的最大公約數
。2、看到乙個題:
有20個陣列,每個陣列裡面有500個數,公升序排列,求出這10000個數字中最大的500個。求複雜度
分析:就是乙個歸併排序,20個陣列的最小元素全部進堆。每次取最小的乙個的時候,從最小元素對應的陣列裡取接下來乙個放進堆裡。堆裡一直最多20個數,充分利用20個陣列的有序性。複雜度:500*log(20)。
3、圖的深度優先遍歷和廣度優先遍歷:
深度遍歷: 深度遍歷類似於樹的先根遍歷,是樹的先根遍歷的推廣。假設初始狀態是圖中所有頂點未曾被訪問,則深度遍歷可從圖中 某個頂點v出發,訪問此頂點,然後依次從v的未被訪問的鄰接點出發深度優先遍歷圖,直至圖中所有與v有路徑的頂點都被訪問到,若此時 圖中尚有頂點未被訪問,則另選圖中乙個未被訪問的頂點作為起始點,重複上述過程,直至圖中所有頂點都被訪問到為止。
廣度遍歷:廣度優先搜尋遍歷類似於樹的按層次遍歷的過程。假設從圖中某個頂點v出發,在訪問了v之後依次訪問v的各個未曾訪問過的鄰接點,然後分別 從這些鄰接點出發依次訪問它們的鄰接點,並使「先被訪問的頂點的鄰接點」先與「後被訪問的鄰接點」被訪問,直至圖中所有已被訪問的鄰接點都被訪問到, 若此時圖中尚有頂點未被訪問到,則另選圖中乙個未被訪問的頂點作為起始點,重複上述操作,直至圖中所有頂點都被訪問到為止。
4、堆排序:建堆,維護堆,堆排序
**的,表示感謝
5、希爾排序:希爾排序(shell sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。
**,希爾排序
**,步長的選擇
**,希爾排序
6、trie樹:
**,trie樹
trie樹的優點是:最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的開銷以達到提高效率的目的。trie樹經常被搜尋引擎系統用於文字詞頻統計。
一些知識點
字串拼接 1.a join b a為元素之間的分隔符,b為待分割的序列 可用於輸出時的資料處理,元素間有空格,末尾沒有 2 s s s str1,str2,str3 前半部分為字串,後半部分為索引。用於引入,s是物件 3.format str1,str2,str3 與f 括號裡為已有變數 關於for...
一些知識點
1.vector是在堆上還是棧上?在堆上.2.我們發現指標有一些 似是而非 的特徵 1 指標消亡了,並不表示它所指的記憶體會被自動釋放。比如函式中的指標是區域性變數,如果它指向了堆上,而自己出了函式後消亡了,但它所指向的記憶體還是存在的,導致了記憶體洩漏.2 記憶體被釋放了,並不表示指標會消亡或者成...
一些知識點
1 sln 解決方案檔案 csproj 專案檔案 cs 原始檔 解決方案包含多個專案,每個專案都是乙個程式。config 配置檔案 3 const int a 1 const 定義乙個量為常量,運算中用到當常量使用,不可以再重新賦值。4 型別轉換。1 隱式轉換。從值型別轉換成引用型別。從引用型別轉換...