Please ignore my previus mail as there was some typo mistake.

/** find the Middle element in the Array without sorting it.
 * This function uses a modified version of QuickSort, where we
 * only consider the one half of the array.
 * This is a recursive function where we look at some section of the array
 * (Concerned Array) at a time.
 *
 * @param low = Loweset index of the Concerned Array
 * @param high = Heighest index of the Concerned Array
 * @param mid= The middle of the element in concerned array  mid = (high-low)/2
 */

int findMedian(int *arr, int low, int high, int mid){
    int pivot = low;
    int l=low;
    int h = high;

    if(l<=h){
        while(l<h){
            while(arr[l]<=arr[pivot]) l++;
            while(arr[h]>arr[pivot]) h--;

            if(l<h){
                // Swapping the left and right
                int temp = arr[l];
                arr[l] = arr[h];
                arr[h] = temp;
            }
        }
        // Swapping the pivot with the high pointer
        int temp = arr[pivot] ;
        arr[pivot] = arr[h];
        arr[h] = temp;
    }
    if(mid< h){
        return findMedian(arr, low, h-1, mid);
    }else if(rank > h ){
        return findMedian(arr, h+1, high, mid);
    }else{
        return arr[h];
}
On Tue, Jul 27, 2010 at 1:33 PM, Shafi Ahmad <[email protected]> wrote:
> /** find the Middle element in the Array without sorting it.
>  * This function uses a modified version of QuickSort, where we
>  * only consider the one half of the array.
>  * This is a recursive function where we look at some section of the array
>  * (Concerned Array) at a time.
>  *
>  * @param low = Loweset index of the Concerned Array
>  * @param high = Heighest index of the Concerned Array
>  * @param mid= The middle of the element in concerned array  mid = 
> (high-low)/2
>  */
>
> int findMedian(int *arr, int low, int high, int mid){
>     int pivot = low;
>     int l=low;
>     int h = high;
>
>     if(l<=h){
>         while(l<h){
>             while(arr[l]<=arr[pivot]) l++;
>             while(arr[h]>arr[pivot]) h--;
>
>             if(l<h){
>                 // Swapping the left and right
>                 int temp = arr[l];
>                 arr[l] = arr[h];
>                 arr[h] = temp;
>             }
>         }
>         // Swapping the pivot with the high pointer
>         int temp = arr[pivot] ;
>         arr[pivot] = arr[h];
>         arr[h] = temp;
>     }
>     if(mid< h){
>         return findElementAtRank(arr, low, h-1, mid);
>     }else if(rank > h ){
>         return findElementAtRank(arr, h+1, high, mid);
>     }else{
>         return arr[h];
>     }
>  }
>
>
> On Tue, Jul 27, 2010 at 12:15 PM, Avik Mitra <[email protected]> wrote:
>> Given that the list is in sorted order. Let us assume that the list in
>> the form of an array A[1...n].
>>
>> Case 1: If n is odd. Then the median is A[(n+1)/2]. Set MEDIAN:=A[(n
>> +1)/2.
>> Case 2: If n is even. Then the median is (A[n/2]+ A[n/2 +1])/2. Set
>> MEDIAN:=(A[n/2]+ A[n/2 +1])/2.
>>
>> Assuming that the array accessing, the addition and division takes
>> O(1) time. The running time of the algorithm is O(1).
>>
>> On Jul 26, 1:15 pm, Manjunath Manohar <[email protected]>
>> wrote:
>>> @Anand...for better efficiency..we can find the pivot as a random
>>> integer..for better worst case complexity..
>>
>> --
>> 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.
>>
>>
>
>
>
> --
> Regards,
> Shafi Ahmad
>
> The difficult we do immediately, the impossible takes a little longer....US 
> Army
>



-- 
Regards,
Shafi Ahmad

The difficult we do immediately, the impossible takes a little longer....US Army

-- 
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.

Reply via email to