i write this programme to find the Kth number in the vector a
the algorithms just like the quick sort
but it doesnot work right
Code:
void quickSelect(vector<int> & a, int left=0, int right=a.size(), int k) {
int middle = (left + right) / 2;
Comparable pivot = a[middle];
int i = left, j = right;
for (;;) {
while (a[i] < pivot) {
i = i + 1;
}
while (a[j] > pivot) {
j = j - 1;
}
if (i < j) {
swap(a[i], a[j]);
i = i + 1;
j = j - 1;
} else
break;
}
a[i+1] = pivot;
if (k <= i)
quickSelect(a, left, i - 1, k);
else if (k > i + 1)
quickSelect(a, i + 1, right, k - i);
else
cout << "the " << k << "th number is " << pivot << endl;
}