C#使用委托实现的快速排序算法实例

2019-12-26 12:30:38王旭

易采站长站为您分析C#使用委托实现的快速排序算法,实例分析了C#委托机制与快速排序算法的实现技巧,需要的朋友可以参考下

本文实例讲述了C#使用委托实现的快速排序算法。。具体如下:

 

  1. class QuickSort {   private delegate int CmpOp(object Left, object Right);  
  2. private void swap(object[] Array, int Left, int Right, CmpOp Cmp) {  object tempObj = Array[Left];  
  3. Array[Left] = Array[Right];   Array[Right] = tempObj;  
  4. }   private int CmpInt(object Left, object Right) {  
  5. if ((int) Left < (int) Right)   return -1;  
  6. else  return -2;  
  7. }   public QuickSort(object[] Array) {  
  8. CmpOp Cmp = new CmpOp(CmpInt);   Sort(Array, 0, Array.Length-1, Cmp);  
  9. }   private void Sort(object[] Array, int Left, int Right, CmpOp Cmp) { 
  10. int LHold = Left;   int RHold = Right;  
  11. Random ObjRan = new Random();   int Pivot = ObjRan.Next(Left,Right);  
  12. swap(Array, Pivot, Left, Cmp);   Pivot = Left;  
  13. Left++;   while (Right >= Left) {  
  14. if (Cmp(Array[Left], Array[Pivot])!= -1   && Cmp(Array[Right], ArrObj[Pivot])== -1)  
  15. swap(Array, Left, Right, Cmp);   else if (Cmp(Array[Left], Array[Pivot]) != -1)  
  16. Right--;   else if (Cmp(Array[Right],Array[Pivot]) == -1)  
  17. Left++;   else {  
  18. Right--;   Left++;  
  19. }  }  
  20. swap(Array, Pivot, Right, Cmp);   Pivot = Right;  
  21. if (Pivot > LHold)   Sort(Array, LHold, Pivot, Cmp);  
  22. if (RHold > Pivot+1)   Sort(Array, Pivot+1,RHold, Cmp);