//排序
int Part(ElemType A[],int low,int high){
ElemType p=A[low];//要排的结点
while(low<high){
while(low<high&&A[high]>=p) --high;//正常时
A[low]=A[high]; //遇到不正常结点结束循环
while(low<high&&A[low]<=p) ++low; //从另一边开始遍历
A[high]=A[low];
}
A[low]=p;//结束时low=high
return low;
}
void QuickSort(ElemType A[],int low,int high){
if(low<high){
int p=Part(A,low,high);//
QuikSort(A,low,p-1);//排当前排好的固定结点的左边
QuikSort(A,p+1,high);//排当前排好的固定结点的右边
}
}
快速排序算法实现 | 先划分 排好一个固定结点 递归左右
最新推荐文章于 2024-06-17 17:45:50 发布