快速排序(c#)

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]);  
  }

 }



}

posted on 2006-03-04 13:58  阿伟  阅读(855)  评论(0编辑  收藏  举报

导航