C#算法 快速排序

来源:互联网 发布:常州博儒网络 编辑:程序博客网 时间:2024/05/29 13:21
using System; 
   
  namespace QuickSorter 
  { 
   public class QuickSorter 
   { 
   private void Swap(ref int l,ref int r) 
   { 
   int s; 
   s=l; 
   l=r; 
   r=s; 
   } 
   public void Sort(int [] list,int low,int high) 
   { 
   int pivot; 
   int l,r; 
   int mid; 
   if(high<=low) 
   return; 
   else if(high==low+1) 
   { 
   if(list[low]>list[high]) 
   Swap(ref list[low],ref list[high]); 
   return; 
   } 
   mid=(low+high)>>1; 
   pivot=list[mid]; 
   Swap(ref list[low],ref list[mid]); 
   l=low+1; 
   r=high; 
   do 
   { 
   while(l<=r&&list[l]<pivot) 
   l++; 
   while(list[r]>=pivot) 
   r--; 
   if(l<r) 
   Swap(ref list[l],ref list[r]); 
   }while(l<r); 
   list[low]=list[r]; 
   list[r]=pivot; 
   if(low+1<r) 
   Sort(list,low,r-1); 
   if(r+1<high) 
   Sort(list,r+1,high); 
   } 
   } 
   public class MainClass 
   { 
   public static void Main() 
   { 
   int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47}; 
   QuickSorter q=new QuickSorter(); 
   q.Sort(iArrary,0,13); 
   for(int m=0;m<=13;m++) 
   Console.WriteLine("{0}",iArrary[m]); 
   } 
   } 
   
  }