快排的一个写法

void quicksort(int left, int right)
{
    int mid = a[(left+right)/2];
    int i = left, j = right;
    while ( i <= j )
    {
        while ( a[i] < mid ) i++
        while ( a[j] > mid ) j--;
        if ( i <= j )
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    if ( left < j ) quicksort(left,j);
    if ( right > i ) quicksort(i,right);
}

比较奇怪的是,将mid改成下标之后再a[mid]似乎会产生不同的结果,不知道是什么原因;


版权声明:本文为qq_31916025原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。