首页 > 编程 > C# > 正文

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

2019-10-29 21:42:01
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#使用委托实现的快速排序算法,实例分析了C#委托机制与快速排序算法的实现技巧,需要的朋友可以参考下

本文实例讲述了C#使用委托实现的快速排序算法。分享给大家供大家参考。具体如下:

 

  1. class QuickSort {  
  2. private delegate int CmpOp(object Left, object Right);  
  3. private void swap(object[] Array, int Left, int Right, CmpOp Cmp) { 
  4. object tempObj = Array[Left];  
  5. Array[Left] = Array[Right];  
  6. Array[Right] = tempObj;  
  7. }  
  8. private int CmpInt(object Left, object Right) {  
  9. if ((int) Left < (int) Right)  
  10. return -1;  
  11. else 
  12. return -2;  
  13. }  
  14. public QuickSort(object[] Array) {  
  15. CmpOp Cmp = new CmpOp(CmpInt);  
  16. Sort(Array, 0, Array.Length-1, Cmp);  
  17. }  
  18. private void Sort(object[] Array, int Left, int Right, CmpOp Cmp) { 
  19. int LHold = Left;  
  20. int RHold = Right;  
  21. Random ObjRan = new Random();  
  22. int Pivot = ObjRan.Next(Left,Right);  
  23. swap(Array, Pivot, Left, Cmp);  
  24. Pivot = Left;  
  25. Left++;  
  26. while (Right >= Left) {  
  27. if (Cmp(Array[Left], Array[Pivot])!= -1  
  28. && Cmp(Array[Right], ArrObj[Pivot])== -1)  
  29. swap(Array, Left, Right, Cmp);  
  30. else if (Cmp(Array[Left], Array[Pivot]) != -1)  
  31. Right--;  
  32. else if (Cmp(Array[Right],Array[Pivot]) == -1)  
  33. Left++;  
  34. else {  
  35. Right--;  
  36. Left++;  
  37. }  
  38. swap(Array, Pivot, Right, Cmp);  
  39. Pivot = Right;  
  40. if (Pivot > LHold)  
  41. Sort(Array, LHold, Pivot, Cmp);  
  42. if (RHold > Pivot+1)  
  43. Sort(Array, Pivot+1,RHold, Cmp);  
  44. }  

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表