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#,委托,快速排序,算法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
分析JAVA中几种常用的RPC框架
2022-12-11 03:54:18
![](https://img.aspxhome.com/file/2023/9/68509_0s.jpg)
Spring Security 构建rest服务实现rememberme 记住我功能
2023-03-29 14:42:03
![](https://img.aspxhome.com/file/2023/1/81961_0s.jpg)
Java图形用户界面设计(Swing)的介绍
2022-08-23 03:29:37
![](https://img.aspxhome.com/file/2023/4/75654_0s.jpg)
Java实现配置加载机制
2023-11-26 09:03:38
java 实现通过 post 方式提交json参数操作
2022-08-29 05:00:16
flutter图片组件核心类源码解析
2023-09-14 16:29:00
![](https://img.aspxhome.com/file/2023/3/108293_0s.jpg)
SpringBoot整合jersey的示例代码
2021-08-28 05:23:12
jenkins安装及其配置笔记
2022-10-03 11:01:19
![](https://img.aspxhome.com/file/2023/8/64048_0s.png)
Java中使用Lambda表达式和函数编程示例
2022-05-06 03:30:40
Seata AT模式启动过程图文示例详解
2022-12-04 19:24:56
![](https://img.aspxhome.com/file/2023/6/63736_0s.png)
C#类继承中构造函数的执行序列示例详解
2022-05-26 11:42:09
![](https://img.aspxhome.com/file/2023/9/79069_0s.png)
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2023-11-27 11:02:17
![](https://img.aspxhome.com/file/2023/3/60113_0s.png)
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
![](https://img.aspxhome.com/file/2023/3/82373_0s.png)
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
![](https://img.aspxhome.com/file/2023/8/57688_0s.png)