二分查詢 最省記憶體的快速查詢實現方式

2021-09-21 14:44:55 字數 764 閱讀 8684

首先,二分查詢的使用物件是有序資料集合。如果是無序的資料,則不能使用二分查詢。二分查詢的時間複雜度為o(logn),插入和刪除操作少,但是查詢頻繁時,可以考慮將資料設計成有數陣列資料,用二分查詢進行查詢。當插入和刪除頻繁時,如果設計成有序陣列資料,則需要頻繁的修改陣列資料,此時不宜用二分查詢。

二分查詢可以理解為生活中的折半查詢,每次都取中間值,直至找到指定值或者最後查詢區間長度為1。二分查詢依賴的是陣列,因為陣列可以直接訪問指定下標的資料,當然,也可以選用鍊錶等資料結構,但是時間複雜度會增加。雖然二分查詢很省記憶體,但是當資料量太大時,也不推薦用二分查詢,因為二分查詢依賴的陣列資料結構在記憶體中要求連續的記憶體空間,資料量越大,占用的連續的記憶體空間越大,如果記憶體中沒有足夠大的連續的記憶體空間,而只有零散的記憶體空間,則由於陣列記憶體空間的要求,無法用二分查詢。

二分查詢的拓展

用二分查詢找出最先出現的某個指定值

private var arr:array = [1,2,3,3,4,4,4,4,5,5,6,6,6,6,6,6,6,6,7,7,8,9,9,10,11];

private function binarysearch(num:int):voidelse if(arr[mid]>num)else

//二分查詢拓展,用二分查詢查詢第乙個值等於給定元素的索引

private function forsearch(begin:int,end:int,num:int):void}}}

} binarysearch(4);

Python 實現二分法快速查詢

演算法 設查詢的陣列期間為array low,high 1 確定該期間的中間位置k 2 將查詢的值t與array k 比較。若相等,查詢成功返回此位置 否則確定新的查詢區域,繼續二分查詢。區域確定如下 a.array k t 由陣列的有序性可知array k,k 1,high t 故新的區間為arr...

二分查詢 優化自己的思想(快速查詢)

正常的二分查詢,頭尾不斷替換,每次砍掉一半 define crt secure no warnings include include define n 1024 void search int a n int num 二分查詢法 else if num a zhong else if flag 1...

折半查詢法(二分法)以及快速查詢

把資料分成兩半,再判斷所查詢的key在哪一半中,再重複上述步驟知道找到目標key。ps 折半查詢法僅適用於對已有順序的陣列 資料進行操作!折半查詢法相對於其他查詢方法例如順序查詢法效率要高很多。如果中間數mid不是整數,需要進行取整 通過比較折半查詢的平均查詢長度,同前面介紹的順序查詢相對比,明顯折...