在一個長度為n的不同元素的陣列中順序查詢元素x,查詢成功時的平均比較次數為多少
技術之瞳 阿里巴巴技術筆試心得習題2.52:
使用二分查詢在有序陣列a[n]中查詢一個元素x的時間複雜度為()。
A. O(n) B. O(n^2) C. O(logn) D. O(nlogn)
分析:
一般這種情況問的都是最壞情況下的時間複雜度,二分查詢每次對半,假設需要m次迭代查詢,即2的m次方等於n,2^m=n,所以m = log_2(n)=logn/log2,時間複雜度只需要關注最高次冪即可,所以結果為C,對數級別的時間複雜度。
技術之瞳 阿里巴巴技術筆試心得習題2.53:
下列()動態集合結構中查詢一個元素的期望時間最短。
A. 雜湊表 B. 連結串列 C. 紅黑樹 D. 二分查詢樹
分析:
雜湊表也就是雜湊表查詢是常數級時間複雜度 O(1),連結串列是線性級別 O(n),紅黑樹和二分查詢數都是對數及時間複雜度 O(logn),所以結果為A。
技術之瞳 阿里巴巴技術筆試心得習題2.54:
在一個長度為n的不同元素的陣列中順序查詢元素x,查詢成功時的平均比較次數為()。
A. n B. n-1/2 C. n+1/2 D. (n+1)/2
分析:
最好情況是x出現在第一位,那比較次數1此即可,然後依次出現在第二位,第三位……依照到出現在第n位,此時比較的次數為n次。所以結果為(1+2+...+n)/n = (n+1)/2.
相關文章
- 陣列的主元素查詢陣列
- 折半查詢法的平均查詢長度(成功/失敗)
- 查詢陣列中第K大的元素陣列
- 在排序陣列中查詢元素的第一個和最後一個位置排序陣列
- Java中查詢陣列多數元素的4種方法Java陣列
- js查詢陣列元素位置JS陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 34. 在排序陣列中查詢元素的第一個和最後一個位置(中)排序陣列
- 微策略面試題:在旋轉後的陣列中查詢元素(二分查詢)面試題陣列
- jQuery查詢第n個li元素jQuery
- 在靜態類中定義一個泛型方法查詢陣列元素泛型陣列
- jquery 查詢某個元素的父元素jQuery
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- 【Java】陣列二分查詢元素Java陣列
- Javascript刷題 》 查詢陣列元素位置JavaScript陣列
- JavaScript專題之學underscore在陣列中查詢指定元素JavaScript陣列
- c++map 查詢元素和list查詢元素速度對比C++
- 【LeetCode-陣列】查詢大多數元素LeetCode陣列
- 給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。陣列
- 九度 二維陣列中的查詢陣列
- 陣列中每個陣列元素出現的次數陣列
- 查詢Set中重複的元素
- Java中查詢列表的峰值元素Java
- c++中的查詢list元素C++
- 比較兩個陣列中是否有相同的元素陣列
- 在一個給定的陣列中查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍, 如果是,則返回最大元素的索引,否則返回-1。陣列索引
- 統計陣列元素中每個元素出現的次數陣列
- MySQL 查詢中保留 IN 中的順序MySql
- C++查詢一個數是否在陣列中find用法C++陣列
- 不會改變操作物件內容的STL演算法(元素查詢,序列查詢,統計元素個數,比較區間,找最值)物件演算法
- 順序查詢
- 九度 1384 二維陣列中的查詢陣列
- 在Python中,為什麼從dict查詢元素比list快?(待填坑)Python
- Excel查詢兩列資料相同的元素Excel
- MySQL 合併查詢join 查詢出的不同列合併到一個表中MySql
- js將陣列中元素的順序打JS陣列
- 二維陣列中的查詢陣列
- 探討一個比較複雜的查詢