As described earlier, it can be done in O(n) independently of k. 1. Find the median, M: O(n) 2. Form a second array containing y(i) = abs(x(i) - M): O(n) 3. Find the kth smallest element of this array, K: O(n) 4. Scan the original array and locate the first k elements such that abs(x(i) - M) <= K: O(n)
Total algorithm: O(n). Dave On Jan 27, 10:01 am, Jammy <[email protected]> wrote: > I agree time should be O(kn) > > On Jan 26, 9:55 pm, Sharath Channahalli > > > > <[email protected]> wrote: > > a) Find the median - O(n) > > b) remove the element and again find the median > > c) conitnue b until you get k-1 elements > > > time complexity - kO(n) > > > On Wed, Jan 26, 2011 at 9:55 PM, ritu <[email protected]> wrote: > > > > solution is nice!!but How to keep track of k closet numbers? > > > > On Jan 23, 9:22 pm, ritesh <[email protected]> wrote: > > > > 1.) find x= median in o(n) > > > > 2.) subtract x from each number of the array > > > > 3.) find the k smallest number using o(n) algrithm > > > > > On Jan 21, 4:04 am, snehal jain <[email protected]> wrote: > > > > > > Given an unsorted array A of n distinct numbers and an integer k where > > > > > 1 <= k <= n, design an algorithm that finds the k numbers in A that > > > > > are closest in value to the median of A in O(n) time. > > > > -- > > > You received this message because you are subscribed to the Google Groups > > > "Algorithm Geeks" group. > > > To post to this group, send email to [email protected]. > > > To unsubscribe from this group, send email to > > > [email protected]<algogeeks%2Bunsubscribe@googlegroups.com> > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/algogeeks?hl=en.- Hide quoted text - > > - Show quoted text - -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
