问题描述:
快速排序算法
//******************************
//描述:快速排序算法
//类名: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中均调试通过.
Inrie(洪晓军)
最新推荐文章于 2024-08-30 09:16:25 发布