algorithm - Find the i-th greatest element -
i want use divide-and-conquer procedure computation of i-th greatest element @ row of integers , analyze asymptotic time complexity of algorithm.
algorithm ith(a,low,high){ q=partition(a,low,high); if (high-i+1==q) return a[q]; else if (high-i+1<q) ith(a,low,q-1); else ith(a,q+1,high); }
is right? if so, how find time complexity?
the time complexity described following recurrence relation:
t(n)=t(n-q)+t(q-1)+Θ(n)
but how can solve recurrence relation, without knowing value of q?
or there algorithm less time complexity computes i-th greatest element @ row of integers?
this variation of quick select algorithm (which finds i-th
smallest element rather i-th
greatest element). has running time of o(n^2)
in worst case, , o(n)
in average case.
to see worst case, assume searching nth
largest element, , happens algorithm picks q
largest element in remaining range. calling ith
function n
times. in addition partition subroutine takes o(n)
total running time o(n^2)
.
to understand average case analysis , check explanation given professor tim roughgarden here.
Comments
Post a Comment