64,585
社区成员
发帖
与我相关
我的任务
分享
int partition(int data[],int lo,int hi) //双向扫描。
{
int key=data[lo]; //以第一个元素为主元
int l=lo;
int h=hi;
while(l<h)
{
while(key<=data[h] && l<h)
h--;
data[l]=data[h];
while(data[l]<=key && l<h)
l++;
data[h]=data[l];
}
data[l]=key; //1.key。只有出现要赋值的情况,才事先保存好第一个元素的值。
return l; //这里和以下所有的Hoare的变形版本都是返回的是枢纽元素,即主元元素l。
}