64,642
社区成员
发帖
与我相关
我的任务
分享
int Median3(int *A,int Left,int Right)
{
int Center=(Left+Right)/2;
if(A[Left]>A[Center])
{
swap(A[Left], A[Center]);
}
if (A[Left] > A[Right])
{
swap(A[Left],A[Right]);
}
if (A[Right] < A[Center])
{
swap(A[Right],A[Center]);
}
swap(A[Center], A[Right-1]);
return A[Center];
}
void QuickSort(int *A,int Left,int Right)
{
if(Left<Right)
{
int Pivot=Median3(A,Left,Right);
int i=Left;
int j=Right-1;
for(;;)
{
while(A[++i]<Pivot)
{
}
while(A[--j]>Pivot)
{
}
if(i<j)
{
swap(A[i],A[j]);
}
else
{
break;
}
}
swap(A[i],A[Right-1]);
QuickSort(A,Left,i-1);
QuickSort(A,i+1,Right);
}
}
void Quick_Sort(int *A,int N)
{
QuickSort(A,0,N-1);
}