用c#進行快速排序

iDotNetSpace發表於2009-02-12
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]); 
   } 
   } 
   
  } 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-548875/,如需轉載,請註明出處,否則將追究法律責任。

相關文章