PS:自己MARK一下~
@思路
挖坑-填坑-换位
@原理
1.以数组中第一个为标志位,将大于他的都放在他后面,小于他的都放在他前面。
2.将小于他和大于他的部分分别作为子数组,再次重复1的步骤,直到排列有序
@代码
VOID QuickSort(INT* Sort, INT Begin, INT End)
{
INT i, j, nTmp;
if (Begin < End)
{
i = Begin;
j = End;
nTmp = Sort[i];
while(i < j)
{
while(i < j && Sort[j] >= nTmp) j--;
if (i < j)
{
Sort[i] = Sort[j];
i++;
}
while (i < j && Sort[i] <= nTmp) i++;
if (i < j)
{
Sort[j] = Sort[i];
j--;
}
}
Sort[j] = nTmp;
QuickSort(Sort, Begin, i - 1);
QuickSort(Sort, j + 1, End);
}
}
@代码备注
1.首先以i作为记录位置,然后从后向前找到小于标志位的数,放在i位置,i递增,然后用j做标志位
2.再用j作为记录位置,从前向后找大于标志位的数,放在j位置,j递减,然后再执行1
3.直到i j相等为止。