//快速排序算法
void QuickSort(ElemType a[],int low,int hight)
{
if(low<high) //递归出口
//Partition()是划分操作,将表a[low...high]划分为满足上述条件的两个子表
{
int pivotpos = Partition(a,low,high); //划分
QuickSort(a,low,Pivotpos-1); //依次对两个字表进行递归排序
QuickSort(a,pivotpos+1,hight);
}
}
int Partition(ElemType a[],int low,int high)
{
ElemType pivot = a[low]; //当前表中第一个元素设为枢轴质,对表进行划分
while(low<high) //循环跳出条件
{
while(low<high && a[high]>=pivot)
--high;
a[low] = a[high]; //将比枢轴值小的元素移动到左端
while(low<high && a[low]<=pivot)
++low;
a[high] = a[low]; //将比枢轴值大的元素移动到右端
}
a[low] = pivot; //枢轴元素存放到最终位置
return low; //返回存放枢轴的最终位置
}
(计算机考研数据结构)快速排序
最新推荐文章于 2024-04-07 20:29:13 发布