2016-10-04 88 views
0

我應該爲四元搜索算法編寫代碼。我得到的唯一說明是它是對二分搜索算法的修改,但不是將數組拆分爲兩個,而是將數組拆分爲四個。四元搜索算法

我有點困惑,像這樣的搜索應該如何工作。我搜索了一個僞代碼,甚至只是一個YouTube視頻來解釋/顯示這個搜索是如何工作的,但我一直無法找到任何東西。

有沒有人有一個僞代碼或快速和骯髒的解釋如何這種搜索算法可能工作?

謝謝!

+0

請問有關代碼的問題。 – karan

+0

假設您使用整數的算法:搜索算法是遞歸函數。你創建一個由4個元素組成的數組,並檢查你正在搜索的值是否大於元素n AND小於元素n + 1。然後你拿出適配元素和你的值,並用這兩個參數再次調用函數(遞歸)。 – Radinator

+0

這很有道理。謝謝! –

回答

2
QuaternarySearch(A[0. . n-1], value, low, high) 
    while high ≥ 1 
     p1/4 = low + ((high – low)/4)   //first quarter point 
     p1/2 = low + ((high – low)/2)   //second quarter point 
     p3/4 = low + (3(high – low)/4)  //third quarter point 
     if A[p1/4] = value 
      return A[p1/4] 
     else if A[p1/2] = value 
      return A[p1/2] 
     else if A[p3/4] = value 
      return A[p3/4] 
     else if A[p1/4] > value 
      return QuaternarySearch(A, value, low, p1/4-1) 
     else if A[p1/2] > value 
      return QuaternarySearch(A, value, p1/4+1, p1/2-1) 
     else if A[p3/4] > value > A[p1/2] 
      return QuaternarySearch(A, value, p1/2+1, p3/4-1) 
else      //if A[p3/4] < value 
      return QuarterSearch(A, value, p3/4 + 1, high)