Lang:GCC
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#define N_MAX 1000001int a[N_MAX];int b[N_MAX];void CopyBtoA(int s,int t){int i;for(i=s;i<=t;i++){a[i]=b[i];}}int BinarySearch2(int s,int t,int k){int i,j,h;int mid;if(s<t){for(i=s+1,j=s,h=t;i<=t;i++){if(a[i]<a[s]){b[j]=a[i];j++;}else if(a[i]>a[s]){b[h]=a[i];h--;}}mid=j;b[mid]=a[s];CopyBtoA(s,t);if(k<mid) return BinarySearch2(s,mid-1,k);else if(k==mid) return a[mid];