博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#的几种算法(二)

Posted on 2006-07-07 10:13  Csunny  阅读(183)  评论(0)    收藏  举报
/*前面我已经推出了三种排序的算法,比较简单。今天我又写了快速排序的算法。希望多多指教。具体的思想,我不做答了。前人的经验。 */
   
  
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]); 
   }
 
   }
 
   
  }
 
 
// 已经编译通过,运行环境:windows xp VC#.net 7.0