準備面試DAY11 查詢和排序演算法的複習

2021-09-30 01:27:42 字數 833 閱讀 1356

今天也是寫彙編實驗的一天,順便把前天部落格struct的坑給填了

時間複雜度較高為o(n),優點是對錶無要求。**很簡單,沒什麼好說的。

/* 順序查詢,array為陣列,n為要查詢的陣列元素個數,key為要查詢的關鍵字*/

int seqsearch(int array, int key, int n)

else if (array[mid]>key)

else

}return -1; // 當left>right時表示查詢區間為空,查詢失敗

}

插值查詢也是有序查詢,查詢成功或者失敗的時間複雜度均為o(log2(log2n))

對於表長較大,而關鍵字分布又比較均勻的查詢表來說,插值查詢演算法的平均效能比折半查詢要好的多。反之,陣列中如果分布非常不均勻,那麼插值查詢未必是很合適的選擇。

即根據key來代替mid:mid = left + (key - array[left]) / (array[right] - array[left])*(right - left)

樹中已經有介紹

思路:將n個資料元素"按塊有序"劃分為m塊(m ≤ n)。每一塊中的結點不必有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小於第3塊中的任一元素,……

步驟:step1 先選取各塊中的最大關鍵字構成乙個索引表;

step2 查詢分兩個部分:先對索引表進行二分查詢或順序查詢,以確定待查記錄在哪一塊中;然後,在已確定的塊中用順序法進行查詢。

map的做題已經做到過

上網看了看部落格,發現乙個博文講的不錯,就直接引用他的吧:

Java語言基礎day11(歸併排序)

歸併排序演算法思想 歸併排序 merge sort 就是利用歸併的思想實現排序的方法。它的原理是假設初始學列有n個記錄,則可以看成是n個有序的子串行,每個子串行的長度為1,然後兩兩歸併,得到 n 2 個長度為2或1的有序子串行,再兩兩歸併 如此重複,直至得到乙個長度為n的有序序列為止,這種排序方法稱...

day11 檔案和異常

讀寫文字檔案 defmain f open twoone.txt r encoding utf 8 print f.read f.close main 讀寫文字檔案,異常處理 defmain f none try f open twoone.txt r encoding utf 8 print f....

day11 高階函式和裝飾器

引數是函式的函式就是實參高階函式 def func4 f f func1 print f 10,20 2 print func1 10,20 2 def func1 nums return 1,2 func4 func1 系統實參高階函式的應用 普通用法 max min 序列 求序列中元素的最大 小...