快速排序法的C#实现

简介: 今天心血来潮,想到自己数据结构学的不好,于是查了下快速排序法的原理,实现了一个玩玩。算是对自身知识的补充。 View Code public class Sort {/// /// 快速排序法(ASC)/// /// /// /// public stati...

今天心血来潮,想到自己数据结构学的不好,于是查了下快速排序法的原理,实现了一个玩玩。算是对自身知识的补充。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif View Code
 
  
public class Sort
{
/// <summary>
/// 快速排序法(ASC)
/// </summary>
/// <param name="SortInt"></param>
/// <param name="StartIndex"></param>
/// <param name="EndIndex"></param>
public static void FastSort(List < int > SortInt, int StartIndex, int EndIndex)
{
// 如果结束索引小于或等于开始索引,说明排序粒度已经最小,只有一个数字了
if (EndIndex <= StartIndex)
{
return ;
}
// 初始比较值的索引
int intIndex = StartIndex;
// 目标比较值的索引
int intTargetIndex = EndIndex;
// 根据数组的宽度决定处理多少次
for ( int intLoopCount = 0 ; intLoopCount <= EndIndex - StartIndex; intLoopCount ++ )
{
// 初始比较值索引在目标比较值索引左边时,初始比较值比目标比较值大,交换一下值,将较小值放在初始比较值左边
if (SortInt[intIndex] > SortInt[intTargetIndex] && intIndex < intTargetIndex)
{
// 交换值
int intTempValue = SortInt[intIndex];
SortInt[intIndex]
= SortInt[intTargetIndex];
SortInt[intTargetIndex]
= intTempValue;
// 交换索引
int intTempIndex = intIndex;
intIndex
= intTargetIndex;
intTargetIndex
= intTempIndex;
}
// 初始比较值索引在目标比较值索引右边时,初始比较值比目标比较值小,交换一下,较小值放在初始比较值左边
else if (SortInt[intIndex] < SortInt[intTargetIndex] && intIndex > intTargetIndex)
{
// 交换值
int intTempValue = SortInt[intIndex];
SortInt[intIndex]
= SortInt[intTargetIndex];
SortInt[intTargetIndex]
= intTempValue;
// 交换索引
int intTempIndex = intIndex;
intIndex
= intTargetIndex;
intTargetIndex
= intTempIndex;
}
// 目标比较值索引向初始比较值索引靠拢
if (intIndex < intTargetIndex)
{
intTargetIndex
-- ;
}
else if (intIndex > intTargetIndex)
{
intTargetIndex
++ ;
}
else
{
continue ;
}
}
int intLeftStartIndex = StartIndex;
int intLeftEndIndex = intIndex;
int intRightStartIndex = intIndex + 1 ;
int intRightEndIndex = EndIndex;
// 将初始比较值左边的数组进行一次排序
FastSort(SortInt, intLeftStartIndex, intLeftEndIndex);
// 将初始比较值右边的数组进行一次排序
FastSort(SortInt, intRightStartIndex, intRightEndIndex);
}
}
相关文章
|
搜索推荐 C#
C#快速排序算法
C#快速排序算法
101 0
|
算法 C#
【愚公系列】2021年11月 C#版 数据结构与算法解析(交换排序-快速排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(交换排序-快速排序)
113 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(交换排序-快速排序)
|
人工智能 C# 算法
C# 快速排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class QuickSorter { private static int[] myArray; private static int a
815 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
36 3
|
4天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
34 12
|
1月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
52 4