class Program
{
static int[] quicksort(int[] arry,int lindex,int rindex)
{
if(lindex<rindex)//要设定好退出递归的条件,也就是当只排列两个数的数组后,排列完了退出
{
int pivot = arry[lindex];
int i = lindex;
int j = rindex;
while(i<j)
{
i = lindex;
j = rindex;
// Console.WriteLine(1);
while (pivot >arry[i])//碰到相等的情况,也要退出循环
{
i++;
}
while(pivot <arry[j])
{
j--;
}
swap(arry, i, j);
arry = quicksort(arry, i + 1, rindex);
arry =quicksort(arry, lindex, i);
}
return arry;
}
static int[] swap(int[] arr,int index1 ,int index2)
{
int tmp;
tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
return arr;
}
static void Main(string[] args)
{
int[] ar = new int[] { 5, 20, 30, 65, 1, 25, 89, 158, 33, 21, 11, 6, 4, 88, 456, 111, 27 };
ar =quicksort(ar, 0, ar.Length-1);
foreach (int i in ar)
{
Console.WriteLine(i);
}
Console.WriteLine(ar[0]);
Console.ReadKey();
}
}
c#快排
最新推荐文章于 2024-05-16 10:08:02 发布