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