#include "stdafx.h"
using namespace std;
void myswape(int &x,int &y){
int temp=x;
x=y;
y=temp;
}
void quicksort( int a[],int low,int high){
//if (low=>high) return ;
if (high<=low) return;
if (1==high-low){
if (a[low] >a[high]) myswape(a[low] ,a[high]);
}
int pivot=0;
int mid=(low+high)>>1;
int scanup,scandown;
pivot=a[mid];
scanup=low+1;
scandown=high;
myswape(a[low],a[mid]);
do{
while( (a[scanup]<=pivot )&& (scanup<scandown) )//(scanup<high+1))
scanup++;
while(pivot<a[scandown])
scandown--;
if (scanup<scandown)
myswape(a[scanup],a[scandown]);
}
while(scanup<scandown);
a[low]=a[scandown];
a[scandown]=pivot;
if (low<scandown-1)
quicksort(a,low,scandown-1);
//if (mid<scanup) quicksort(a[],scanup,high);
if (scandown+1<high)
quicksort(a,scandown+1,high);
}
void main(){
int a[9]={5,8,9,6,4,7,3,10,1};
quicksort(a,0,8);
}