69,366
社区成员
发帖
与我相关
我的任务
分享
typedef struct
{
int *base;
int top;
}Stack;
void Nonrec_QuickSort(SqList &L,int low,int high)
//非递归的快速排序
{
if(low>=high)
return;
int left;
int right;
int pivot;
Stack S;
S.base=new int[24];
//log2 3000 ≈ 24
S.top=0;
S.base[S.top++]=high;
S.base[S.top++]=low;
while(S.top)
{
left=S.base[--S.top];
right=S.base[--S.top];
pivot=Get_pivotloc(L,left,right);
//Get_pivotloc函数得到每次支点的最终位置
if(pivot+1<right)
{
S.base[S.top++]=right;
S.base[S.top++]=pivot+1;
}
if(left<pivot-1)
{
S.base[S.top++]=pivot-1;
S.base[S.top++]=left;
}
}
}
void QuickSort(SqList &L,int low,int high)
//递归的快速排序
{
if(low<high)
{
int pivot=Get_pivotloc(L,low,high);
QuickSort(L,low,pivot-1);
QuickSort(L,pivot+1,high);
}
}
S.base=new int[3];