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作者:顾剑辉