using System;
public class Test
{
public static void Main()
{
int[] sortMe = { 2, 5, 6, 4, 8, 9, 6, 3, 21, 2, 5, 4, 8, 9, 6, 5, 46, 6, 3 };
QuickSort(sortMe, 0, sortMe.Length - 1);
foreach (var item in sortMe)
Console.Write(item + " ");
}
private static void QuickSort(int[] sort, int first, int last)
{
int i = first;
int j = last;
int pivot = first;
int temp;
while (i <= j)
{
while (sort[i] < sort[pivot]) { i++; }
while (sort[j] > sort[pivot]) { j--; }
if (i <= j)
{
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
i++;
j--;
}
}
if (first < j) QuickSort(sort, first, j);
if (last > i) QuickSort(sort, i, last);
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCSAgICBpbnRbXSBzb3J0TWUgPSB7IDIsIDUsIDYsIDQsIDgsIDksIDYsIDMsIDIxLCAyLCA1LCA0LCA4LCA5LCA2LCA1LCA0NiwgNiwgMyB9OwogICAgICAgICAgICAgICAgICAgIFF1aWNrU29ydChzb3J0TWUsIDAsIHNvcnRNZS5MZW5ndGggLSAxKTsKICAgICAgICAKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBzb3J0TWUpCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGUoaXRlbSArICIgIik7Cgl9CiAgICAKICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBRdWlja1NvcnQoaW50W10gc29ydCwgaW50IGZpcnN0LCBpbnQgbGFzdCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBpID0gZmlyc3Q7CiAgICAgICAgICAgIGludCBqID0gbGFzdDsKICAgICAgICAgICAgaW50IHBpdm90ID0gZmlyc3Q7CiAgICAgICAgICAgIGludCB0ZW1wOwoKICAgICAgICAgICAgd2hpbGUgKGkgPD0gaikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd2hpbGUgKHNvcnRbaV0gPCBzb3J0W3Bpdm90XSkgeyBpKys7IH0KICAgICAgICAgICAgICAgIHdoaWxlIChzb3J0W2pdID4gc29ydFtwaXZvdF0pIHsgai0tOyB9CgogICAgICAgICAgICAgICAgaWYgKGkgPD0gaikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gc29ydFtpXTsKICAgICAgICAgICAgICAgICAgICBzb3J0W2ldID0gc29ydFtqXTsKICAgICAgICAgICAgICAgICAgICBzb3J0W2pdID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgai0tOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGZpcnN0IDwgaikgUXVpY2tTb3J0KHNvcnQsIGZpcnN0LCBqKTsKICAgICAgICAgICAgaWYgKGxhc3QgPiBpKSBRdWlja1NvcnQoc29ydCwgaSwgbGFzdCk7CiAgICAgICAgfQp9