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


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

class QuickSort { 
 private delegate int CmpOp(object Left, object Right); 
 private void swap(object[] Array, int Left, int Right, CmpOp Cmp) {
   object tempObj = Array[Left]; 
   Array[Left] = Array[Right]; 
   Array[Right] = tempObj; 
 } 
 private int CmpInt(object Left, object Right) { 
  if ((int) Left < (int) Right) 
   return -1; 
  else 
   return -2; 
 } 
 public QuickSort(object[] Array) { 
  CmpOp Cmp = new CmpOp(CmpInt); 
  Sort(Array, 0, Array.Length-1, Cmp);    
 } 
 private void Sort(object[] Array, int Left, int Right, CmpOp Cmp) {
  int LHold = Left; 
  int RHold = Right; 
  Random ObjRan = new Random(); 
  int Pivot = 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); 
   else if (Cmp(Array[Left], Array[Pivot]) != -1) 
    Right--; 
   else if (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#程序设计有所帮助。



相关阅读:
win10无法新建文件夹怎么办 win10右键新建菜单设置方法图文教程
Win10一周年14328更新获取Insider预览版独立
javascript面向对象之this关键词用法分析
javascript伸缩型菜单实现代码
C++中可正确获取UTF-8字符长度的函数分享
jQuery实现简易的天天爱消除小游戏
升级Win10正式版后邮件应用被报错0x80070032:已发送邮件不同步
js Dialog 去掉右上角的X关闭功能
PHP mysql事务问题实例分析
Android 进入设备后台data文件夹的办法
基于javascript实现简单计算器功能
php字符串替换函数substr_replace()用法实例
Android开发中R.java文件丢失或无法更新的解决方法
Win8系统怎么安装无线打印机?
快速导航

Copyright © 2016 phpStudy |