• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

快速排序法的C#实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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);
}
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c语言typedef与define的相同发布时间:2022-07-13
下一篇:
详解C++11智能指针详解C++11智能指针发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap