#include <stdio.h>
int keyValue=a[low];
int i=low;
int j=high;
int temp=0;
while(i<j){
while(i<j && a[j]>keyValue)
j--;
while(i<j && a[i]<=keyValue)
i++;
if(i<j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp=keyValue;
if(temp < a[j]){
a[low]=a[j-1];
a[j-1]=temp;
printf("temp %d,a[j] %d\n",temp,a[j]);
return j-1;
}else {
a[low]=a[j];
a[j]=temp;
return j;
}
}
void quickSort(int* a,int low,int high){
if(low<high){
int keyValue=keyValuePositionFunction(a,low,high);
quickSort(a,low,keyValue-1);
quickSort(a,keyValue+1,high);
}
}
void main(){
int a[8]={10,3,6,20,8,9,30,4};
int low=0;
int high=8;
quickSort(a,low,high-1);
printf("after quickSort \n");
for(int i=0;i<high;i++){
printf("%d,",a[i]);
}
#include <stdlib.h>
//计算中间值
int keyValue=a[low];
int i=low;
int j=high;
int temp=0;
while(i<j){
while(i<j && a[j]>keyValue)
j--;
while(i<j && a[i]<=keyValue)
i++;
if(i<j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp=keyValue;
if(temp < a[j]){
a[low]=a[j-1];
a[j-1]=temp;
printf("temp %d,a[j] %d\n",temp,a[j]);
return j-1;
}else {
a[low]=a[j];
a[j]=temp;
return j;
}
}
void quickSort(int* a,int low,int high){
if(low<high){
int keyValue=keyValuePositionFunction(a,low,high);
quickSort(a,low,keyValue-1);
quickSort(a,keyValue+1,high);
}
}
void main(){
int a[8]={10,3,6,20,8,9,30,4};
int low=0;
int high=8;
quickSort(a,low,high-1);
printf("after quickSort \n");
for(int i=0;i<high;i++){
printf("%d,",a[i]);
}
}