写法一:答案错误
void binary_Search(int l,int r)
{
int k=l,q=r,s=(l+r)/2;
while(k<=q)
{
while(a[k]>a[s]) k++;
while(a[q]<a[s]) q--;
if(k<=q)
{
swap(a[k],a[q]);
k++; q--;
}
}
if(l<q) binary_Search(l,q);
if(r>k) binary_Search(k,r);
}
写法二:正确
void binary_Search(int l,int r)
{
int k=l,q=r,s=a[(l+r)/2];
while(k<=q)
{
while(a[k]>s) k++;
while(a[q]<s) q--;
if(k<=q)
{
swap(a[k],a[q]);
k++; q--;
}
}
if(l<q) binary_Search(l,q);
if(r>k) binary_Search(k,r);
}