思路:
快速排序选取第0个元素为val;
通过FaindPos()找到第0个元素按升序排序所在的位置
则val已经在升序后所在位置pos
val左边的元素和右边元素按照同样方法排序
FaindPos()函数(升序)思路:(先判断大小,再决定是移到还是赋值)
判断a[high]和val大小
如果a[high]>val,high--;
否则a[low]=a[high]
判断a[low]和val大小
如果a[low]
函数代码:
#include
void QuickSort(int * a,int low,int high);
int FaindPos(int * a,int low,int high);
int main(void){
int a[7] = {-1,6,8,9,4,5,-8};
QuickSort(a,0,6);
for(int i=0;i<7;i++){
printf("%d ",a[i]);
}
return 0;
}
//参数一表示要排序的数组的地址,参数二表示要排序的数的最小角标, 参数三表示要排序的数的最大角标
void QuickSort(int * a,int low,int high){
if(low=val){
--high;
}
a[low] = a[high];
if(a[low]<=val){
++low;
}a[high] = a[low];
}
a[low] = val;
return low;
}
运行结果:



