<span style="font-size:24px;color:#FFFF00;">partition + select</span>
#include <iostream>
using namespace std;
int Partition(int data[],int start, int end) {
int i = start;
int j = end +1;
int key = data[start];
while( i < j) {
i++;
while( data[i] < key) i++;
j--;
while( data[j] > key) j--;
if( i < j) {
swap(data[i] , data[j]);
}
}
swap(data[start],data[j]);
return j;
}
int KthNumber(int data[], int length, int kth) {
int index = Partition(data,0,length-1);
while( index != kth) {
if( index > kth) {
index = Partition(data,0,index-1);
} else if( index < kth) {
index = Partition(data,index +1, length-1);
}
}
return data[index];
}
int main() {
int length = 10;
int data[] = {3,45,34,6,4,1,23,9,7,8};
int kth = 5;
KthNumber(data,10,kth);
for( int i = 0 ; i < kth; i++) {
cout <<data[i] <<"\t";
}
cout <<endl;
}