有关快速排序,高程朋友请进……
求以 (low+high) / 2 为基准的快速排序算法。
以下算法,对吗(说明:通过调试结果是对的)?
还想问一下,快速排序算法是否是已成形的统一的算法呢?
还是有不同的实现呢?高手指点。谢过了。分不是问题……
具体算法如下:
//快速排序
void r_quick(int e[],int low,int high)
{
int i,j,t;
if(low < high) //对low至high以e[low]为基准作划分
{
i = low;
j = high;
// t = e[i]; //以e[i]为基准
//以e[(i+j)/2]为基准
t = e[(i+j)/2];
e[(i+j)/2] = e[i];
while (i < j)
{
while (i < j && e[j] > t) j --;
if (i < j) e[i++] = e[j];
while (i < j && e[i] <= t) i ++;
if (i < j) e[j--] = e[i];
}
e[i] = t;
r_quick (e,low,i-1); //递归,对左子序列作划分
r_quick (e,i+1,high); //递归,对右子序列作划分
}
}