[c#算法和数据结构]快速排序算法
问题描述:
快速排序算法
//******************************
//描述:快速排序算法
//类名:QuickSort
//作者:洪晓军
//时间:2004-11-2
//******************************
public class QuickSort
{
public void quickSort(int[ ] a,int left, int right) //left为数组a第一个元素位置,right为数组a最后一个元素位置
{
int i, j, pivot, temp; //pivot为支点
if (left >= right)
return;
i = left;
j = right + 1;
pivot = a[left];
while (true)
{
do
{
i++;
} while (a[i] < pivot && i < right); //从左向右寻找大于支点元素
do
{
j--;
} while (a[j] > pivot && j > 0); //从右向左寻找小于支点元素
if (i >= j)
break;
else //满足i<j则交换i和j位置元素值
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[j];
a[j] = pivot; //以a[j]为新支点,j位置左边元素值均小于a[j],j位置右边元素值均大于a[j]
quickSort(a, left, j - 1); //递归排序
quickSort(a, j + 1, right);
}
}
以上程序在Microsoft Visual Studio .NET 2003 和Visual C# 2005 Express Edition Beta1中均调试通过.