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

作者:不是JS 时间:2022-01-22 18:29:52 

本文实例讲述了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#程序设计有所帮助。

标签:C#,委托,快速排序,算法
0
投稿

猜你喜欢

  • 分析JAVA中几种常用的RPC框架

    2022-12-11 03:54:18
  • Spring Security 构建rest服务实现rememberme 记住我功能

    2023-03-29 14:42:03
  • Java图形用户界面设计(Swing)的介绍

    2022-08-23 03:29:37
  • Java实现配置加载机制

    2023-11-26 09:03:38
  • java 实现通过 post 方式提交json参数操作

    2022-08-29 05:00:16
  • flutter图片组件核心类源码解析

    2023-09-14 16:29:00
  • SpringBoot整合jersey的示例代码

    2021-08-28 05:23:12
  • jenkins安装及其配置笔记

    2022-10-03 11:01:19
  • Java中使用Lambda表达式和函数编程示例

    2022-05-06 03:30:40
  • Seata AT模式启动过程图文示例详解

    2022-12-04 19:24:56
  • C#类继承中构造函数的执行序列示例详解

    2022-05-26 11:42:09
  • Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)

    2023-11-27 11:02:17
  • C#实现winform自动关闭MessageBox对话框的方法

    2022-09-02 02:21:53
  • Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解

    2023-01-31 14:08:39
  • java中Unsafe的使用讲解

    2022-08-02 08:08:18
  • 深入了解Spring中的@Autowired和@Resource注解

    2021-09-19 06:57:20
  • Java获取文件的类型和扩展名的实现方法

    2021-09-24 08:56:56
  • Java Config下的Spring Test几种方式实例详解

    2022-12-17 00:31:36
  • Spring如何消除代码中的if-else/switch-case

    2021-12-12 03:04:47
  • Thread类interrupt interrupted及isInterrupted区别

    2023-07-20 06:52:20
  • asp之家 软件编程 m.aspxhome.com