namespace VcQuickSort { /// <summary> /// ClassQuickSort 快速排序。 /// 范维肖 /// </summary> public class QuickSort { public QuickSort() { }
private void Swap(ref int i,ref int j) //swap two integer { int t; t=i; i=j; j=t; }
public void Sort(int [] list,int low,int high) { if(high<=low) { //only one element in array list //so it do not need sort return; } else if (high==low+1) { //means two elements in array list //so we just compare them if(list[low]>list[high]) { //exchange them Swap(ref list[low],ref list[high]); return; } } //more than 3 elements in the arrary list //begin QuickSort myQuickSort(list,low,high); }
public void myQuickSort(int [] list,int low,int high) { if(low<high) { int pivot=Partition(list,low,high); myQuickSort(list,low,pivot-1); myQuickSort(list,pivot+1,high); } }
private int Partition(int [] list,int low,int high) { //get the pivot of the arrary list int pivot; pivot=list[low]; while(low<high) { while(low<high && list[high]>=pivot) { high--; } if(low!=high) { Swap(ref list[low],ref list[high]); low++; } while(low<high && list[low]<=pivot) { low++; } if(low!=high) { Swap(ref list[low],ref list[high]); high--; } } return low; }