天天看點

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

  }

 }

}

已經編譯通過,運作環境:windows  xp  VC#.net 7.0

作者:顧劍輝

繼續閱讀