7

the following question was asked in a recent microsoft interview

Given an unsorted array of size 5. How many minimum comparisons are needed to find the median? then he extended it for size n.

solution for 5 elements according to me is 6

1) use 3 comparisons to arrange elements in array such that a[1]<a[2] , a[4]<a[5] and a[1]<a[4]
a) compare a[1] and a[2] and swap if necessary
b) compare a[4] and a[5] and swap if necessary 
c) compare a[1] and a[4].if a[4] is smaller than a[1] , then swap a[1] wid a[4] and a[2] wid a[5]
2)if a[3]>a[2].if a[2]<a[4] median value = min(a[3],a[4]) else median value=min(a[2],a[5]) 
3)if a[3]<a[2].if a[3]>a[4] median value = min(a[3],a[5]) else median value=min(a[2],a[4]) 

can this be extended to n elements. if not how can we find median in n elements in O(n) besides quickselect

4

1 に答える 1

4

選択アルゴリズムは、リストを5つの要素のグループに分割します。(残りの要素は今のところ無視されます。)次に、5つのグループごとに、中央値が計算されます(5つの値をレジスターにロードして比較できる場合、非常に高速になる可能性のある操作-6回の比較分)。次に、このn / 5要素のサブリストでSelectが再帰的に呼び出され、真の中央値が検出されます。

于 2012-07-05T19:00:59.197 に答える