using System.Collections.Generic;
static List<int> RandomList(int size) {
List<int> ret = new List<int>(size);
Random rand = new Random(1);
for (int i = 0; i < size; i++) {
ret.Add(rand.Next(size));
static int MyPartition(List<int> list, int left, int right)
while(left <= right && list[left] <= pivot)
while(left <= right && list[right] > pivot)
list[start] = list[left - 1];
list[left] = list[right];
static void MyQuickSort(List<int> list, int left, int right)
if(list == null || list.Count <= 1)
int pivotIdx = MyPartition(list, left, right);
MyQuickSort(list, left, pivotIdx - 1);
MyQuickSort(list, pivotIdx, right);
static void DumpList(List<int> list) {
list.ForEach(delegate(int val)
public static void Main()
List<int> list = RandomList(100);
MyQuickSort(list, 0, list.Count);