先给出程序,改天再分析:(程序在VC 6.0+XP SP2下通过)
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int sort_array(int *p,int low,int high)

...{
if(low>high) return 0;
int swap=*(p+low);
int i=low;
int j=high;
while(i<j)

...{
while(i<j&&swap<=*(p+j)) j--;
*(p+i)=*(p+j);
while(i<j&&swap>=*(p+i)) i++;
*(p+j)=*(p+i);
}
*(p+i)=swap;
//cout<<"i="<<i<<" "<<endl;
return i;
}

int sort(int *p,int low,int high)

...{
if(low>high) return 0;
int point=0;
point=sort_array(p,low,high);
sort(p,low,point-1);
sort(p,point+1,high);
return 1;
}
int main()

...{
srand( (unsigned)time( NULL ) );
int array[100];
for(int i=0;i<100;i++)

...{
array[i]=(rand()%100+1);
}
//int array[10]={1,5,2,6,3,4,8,9,6,7};
sort(array,0,99);
for(i=0;i<100;i++)
cout<<*(array+i)<<" ";
cout<<endl;
return 0;
}