快速排序算法是最快的排序算法,当然它是针对大量通常无序的集合而言是正确的。
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]