C#
static int MakePivot(List<int> mylist, int left, int right){ //for quick sort.
int pivot = mylist[right]; //pivot on the right
int cursor = mylist[left] - 1;
for(int i=left;i<right;i++){
if(mylist[i]<=pivot){
cursor++;
(mylist[cursor], mylist[i]) = (mylist[i], mylist[cursor]);
}
}
pivot = cursor + 1;
(mylist[pivot], mylist[right]) = (mylist[right], mylist[pivot]);
return pivot;
}
static void QuickSort(List<int> mylist, int left, int right){
if(left<right){
int pivot = MakePivot(mylist,left,right);
QuickSort(mylist,left,pivot-1);
QuickSort(mylist,pivot+1,right);
}
}
static void Main(string[] args){
List<int>x = MakeList("7,4,8,9,5,3,2,6"); //MakeList() takes a string of single digits and returns an integer list. Works fine.
Console.WriteLine("Before QS: ");
for(int i=0;i<x.Count;i++){
Console.Write("{0} ",x[i]);
}
QuickSort(x,0,x.Count-1);
Console.WriteLine("After QS: ");
for(int i=0;i<x.Count;i++){
Console.Write("{0} ",x[i]);
}
Console.WriteLine("");
}
C#
static int MakePivot(List<int> mylist, int left, int right){ //for quick sort.
int pivot = mylist[right]; //pivot on the right
int cursor = mylist[left] - 1;
for(int i=left;i<right;i++){
if(mylist[i]<=pivot){
cursor++;
(mylist[cursor], mylist[i]) = (mylist[i], mylist[cursor]);
}
}
pivot = cursor + 1;
(mylist[pivot], mylist[right]) = (mylist[right], mylist[pivot]);
return pivot;
}
static void QuickSort(List<int> mylist, int left, int right){
if(left<right){
int pivot = MakePivot(mylist,left,right);
QuickSort(mylist,left,pivot-1);
QuickSort(mylist,pivot+1,right);
}
}
static void Main(string[] args){
List<int>x = MakeList("7,4,8,9,5,3,2,6"); //MakeList() takes a string of single digits and returns an integer list. Works fine.
Console.WriteLine("Before QS: ");
for(int i=0;i<x.Count;i++){
Console.Write("{0} ",x[i]);
}
QuickSort(x,0,x.Count-1);
Console.WriteLine("After QS: ");
for(int i=0;i<x.Count;i++){
Console.Write("{0} ",x[i]);
}
Console.WriteLine("");
}