您的位置:首页 > 编程语言 > C#

[排序算法]NET C# 快速排序 代码

2018-02-01 20:13 441 查看
static void Main(string[] args)
{
var list = new int[] { 50, 70, 80, 60, 10, 40, 90, 30, 20 };
Console.WriteLine(String.Join(" ", list));
QuickSort(list, 0, list.Length - 1);
Console.ReadKey();
}

  
static void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
var location = QuickSortItem(arr, low, high);
Console.WriteLine("------------------------------------");
QuickSort(arr, low, location);
QuickSort(arr, location + 1, high);
}
}

static int QuickSortItem(int[] arr, int low, int high)
{
var key = arr[low];
while (low < high)
{
while (low < high && arr[high] >= key)
{
high--;
}
if (low == high) { break; }
Swap(arr, low, high);

while (low < high && arr[low] <= key)
{
low++;
}
if (low == high) { break; }
Swap(arr, low, high);
}
return low;
}

private static void Swap(int[] arr, int i, int j)
{
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

Console.WriteLine(String.Join(" ", arr));
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: