今天也是寫彙編實驗的一天,順便把前天部落格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 序列 求序列中元素的最大 小...