快速排序算法是最快的排序算法,当然它是针对大量通常无序的集合而言是正确的。

public void QSort()

{

    RecQSort(0, numElements - 1);

}

public void RecQSort(int first, int last)

{

    if ((last - first) <= 0)

        return;

    else

    {

        int part = this.Partition(first, last);

        RecQSort(first, part - 1);

        RecQSort(part + 1, last);

    }

}

public int Partition(int first, int last)

{

    int pivotVal = arr[first];

    int theFirst = first;

    bool okSide;

    first++;

    do

    {

        okSide = true;

        while (okSide)

            if (arr[first] > pivotVal)

                okSide = false;

            else

            {

                first++;

                okSide = (first <= last);

            }

        okSide = true;

        while (okSide)

            if (arr[last] <= pivotVal)

                okSide = false;

            else

            {

                last--;

                okSide = (first <= last);

            }

        if (first < last)

        {

            Swap(first, last);

            this.DisplayElements();

            first++;

            last--;

        }

    } while (first <= last);

    Swap(theFirst, last);

    this.DisplayElements();

    return last;

}

public void Swap(int item1, int item2)

{

    int temp = arr[item1];

    arr[item1] = arr[item2];

    arr[item2] = temp;

}

如果数组内的的数据是随机的,那么选择第一个

最流行的选择中间值得方法。

theFirst = arr[(int)arr.GetUpperBound(0) / 2]