在一個長度為n的不同元素的陣列中順序查詢元素x,查詢成功時的平均比較次數為多少

無鞋童鞋發表於2017-06-27

  技術之瞳 阿里巴巴技術筆試心得習題2.52:
  使用二分查詢在有序陣列a[n]中查詢一個元素x的時間複雜度為()。
  A. O(n)    B. O(n2

n^2
)    C. O(logn)    D. O(nlogn)
分析:
  一般這種情況問的都是最壞情況下的時間複雜度,二分查詢每次對半,假設需要m次迭代查詢,即2的m次方等於n,2m=n
2^m=n
,所以m=log2(n)=logn/log2
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

(1+2+...+n)/n = (n+1)/2
.

相關文章