Interview Questions

Given a array of random integers, sort the odd elements in descending order.......

Software QA/Tests Interview Questions from Microsoft


(Continued from previous question...)

Given a array of random integers, sort the odd elements in descending order.......

Question:
Given a array of random integers, sort the odd elements in descending order and even numbers in ascending order. e.g. for i/p (1,4,5,2,3,6,7) O/p = (7,5,3,1,2,4,6) Optimize for time complexity.


maybe an answer:


just overwrite the > operator and do quicksort.

void swap(int& x, int& y)
{
int t;

t = x;
x = y;
y = t;
}

int Partition(int a[], int l, int r)
{
int v = a[r];
int i = l-1;
int j = r;

while(j>i)
{
while(true)
{
++i;
if(a[i]%2==1 && v%2==1)
{
if(a[i] >= v)
break;
}
else if(a[i]%2==1 && v%2==0)
{
continue;
}
else if(a[i]%2==0 && v%2==1)
{
break;
}
else
{
if(a[i]>=v)
break;
}
}

while(true)
{
--j;
if(a[j]%2==1 && v%2==1)
{
if(a[j]>=v)
break;
}
else if(a[j]%2==1 && v%2==0)
{
break;
}
else if(a[j]%2==0 && v%2==1)
{
continue;
}
else
{
if(a[j]<=v)
break;
}
}

if(i>j)
break;

swap(a[i], a[j]);
}

swap(a[i], a[r]);
return i;
}

void mySort(int a[], int l, int r)
{
if(l>=r)
return;

int m = Partition(a, l, r);

mySort(a, l, m-1)
; mySort(a, m+1, r);
}

(Continued on next question...)

Other Interview Questions