快速排序:在排序表中任取一个元素作为基轴元素,通过一趟排序将排序表从k处拆分分为两个部分,左边小于基轴元素,右边大于基轴元素,k个位置存放基轴元素,依次对基轴左边和基轴右边继续进行快速排序操作,直至划分完全为止
代码思想:选择表头第一个元素作为基轴元素,定义两个变量分别从表头表尾遍历,当大于基轴元素,插入基轴右边,当小于基轴元素插入基轴的左边。
int partition(int A[],int low,int high){
int privort=A[low]//privort作为基轴元素
while(low<high)//当low<high时继续进行查找移动操作
{
if(A[high]>=privort)
high--;
A[low]=A[high];//比基轴小的元素移动到左边
if(A[low]<=privort)
low++;
A[high]=A[low];//比基轴大的元素移动到右边
}
A[low]=privort;//基轴元素最终存放位置
return low;//返回最终位置
}
void QuickSort(int A[],int low,int high){
if(low<high){//递归跳出条件
int pivort=partition(A,low,high);//划分
QuickSort(int A,low,privort-1);//划分左子表
QuickSort(int A,low,privort+1);//划分右子表
}
}