大神博客在此,参考后自己能写出程序了。
http://blog.csdn.net/morewindows/article/details/6684558
#include<stdio.h>
int AdjustArray(int s[],int l,int r);
int quick_sort(int s[],int l,int r);
void main(){
int s[10]={72,6,57,88,60,42,83,73,48,85};
int i;
quick_sort(s,0,10);
for(i=0;i<10;i++){
printf("%d\n",s[i]);
}
}
int AdjustArray(int s[],int l,int r){
int i=l,j=r;
int x=s[i];
while(i<j){
while(i<j&&x<s[j])j--;
if(i<j){
s[i]=s[j];//挖j坑并填i坑,
i++;//以此i+1坑为点,向中间搜索。
}
while(i<j&&s[i]<x)i++;
if(i<j){
s[j]=s[i];//挖i坑并填j坑,
j--;//以此j+1坑为点,向中间搜索。
}
}
x=s[i];//此时a[i]==a[j],i,j指向同一元素。
return i;
}
int quick_sort(int s[],int l,int r){
if(l<r){//大前提。
int i=AdjustArray(s,l,r);
quick_sort(s,l,i-1);
quick_sort(s,i+1,r);
}
}