C#使用委托实现的快速排序算法实例
本文实例讲述了C#使用委托实现的快速排序算法。分享给大家供大家参考。具体如下:
classQuickSort{ privatedelegateintCmpOp(objectLeft,objectRight); privatevoidswap(object[]Array,intLeft,intRight,CmpOpCmp){ objecttempObj=Array[Left]; Array[Left]=Array[Right]; Array[Right]=tempObj; } privateintCmpInt(objectLeft,objectRight){ if((int)Left<(int)Right) return-1; else return-2; } publicQuickSort(object[]Array){ CmpOpCmp=newCmpOp(CmpInt); Sort(Array,0,Array.Length-1,Cmp); } privatevoidSort(object[]Array,intLeft,intRight,CmpOpCmp){ intLHold=Left; intRHold=Right; RandomObjRan=newRandom(); intPivot=ObjRan.Next(Left,Right); swap(Array,Pivot,Left,Cmp); Pivot=Left; Left++; while(Right>=Left){ if(Cmp(Array[Left],Array[Pivot])!=-1 &&Cmp(Array[Right],ArrObj[Pivot])==-1) swap(Array,Left,Right,Cmp); elseif(Cmp(Array[Left],Array[Pivot])!=-1) Right--; elseif(Cmp(Array[Right],Array[Pivot])==-1) Left++; else{ Right--; Left++; } } swap(Array,Pivot,Right,Cmp); Pivot=Right; if(Pivot>LHold) Sort(Array,LHold,Pivot,Cmp); if(RHold>Pivot+1) Sort(Array,Pivot+1,RHold,Cmp); } }
希望本文所述对大家的C#程序设计有所帮助。