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));
}