C#排序算法之快速排序解析
作者:mlovelcottage 发布时间:2023-03-21 00:39:28
标签:C#,快速排序
本文实例为大家分享了C#实现快速排序的具体代码,供大家参考,具体内容如下
代码:
/// <summary>
/// 排序
/// </summary>
/// <param name="array">要排序的数组</param>
/// <param name="low">下标开始位置,向右查找</param>
/// <param name="high">下标开始位置,向左查找</param>
public static void Sort(int[] array, int low, int high)
{
if (low >= high)
return;
//完成一次单元排序
int index = SortUnit(array, low, high);
//递归调用,对左边部分的数组进行单元排序
Sort(array, low, index - 1);
//递归调用,对右边部分的数组进行单元排序
Sort(array, index + 1, high);
}
/// <summary>
/// 单元排序
/// </summary>
/// <param name="array">要排序的数组</param>
/// <param name="low">下标开始位置,向右查找</param>
/// <param name="high">下标开始位置,向右查找</param>
/// <returns>每次单元排序的停止下标</returns>
public static int SortUnit(int[] array, int low, int high)
{
int key = array[low];//基准数
while (low < high)
{
//从high往前找小于或等于key的值
while (low < high && array[high] > key)
high--;
//比key小开等的放左边
array[low] = array[high];
//从low往后找大于key的值
while (low < high && array[low] <= key)
low++;
//比key大的放右边
array[high] = array[low];
}
//结束循环时,此时low等于high,左边都小于或等于key,右边都大于key。将key放在游标当前位置。
array[low] = key;
return high;
}
来源:https://blog.csdn.net/miluli1/article/details/85990704
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 大顶堆每个结点的值都大于或等于其左右孩子结点的值小顶堆每个结点的值都小于或等于其左右孩子结点的值对比图实现代码public class He
- 一、背景项目中肯定会遇到异步调用其他方法的场景,比如有个计算过程,需要计算很多个指标的值,但是每个指标计算的效率快慢不同,如果采用同步执行的
- 一.方法的基本使用1.什么是方法方法是一个代码片段,类似于C语言中的函数2.方法基本语法基本语法 // 方法定义
- 看似很鸡肋其实在某些特殊场景还是比较有用的。比如你将实体类转Map或者拿到一个Map结果的时候,你是怎么获取某个map的key和value。
- 很久以来都想研究一下利用java操作Excel的方法,今天没事,就稍微了解了一下,特总结一下。利用java操作Excel,有个开源的东东-j
- 本文分为俩部分:第一部分介绍如何给Eclipse安装Spring Boot开发插件spring tool suite(简称STS);第二部分
- 当我们需要与 NIO Channel 进行交互时, 我们就需要使用到 NIO Buffer, 即数据从 Buffer读取到 Channel
- 1.稀疏数组引入1.1 使用场景笔者在课程设计中曾写过一个扫雷小游戏,为了便于讲解,我们来做个简化(实际比这个复杂),只考虑当前位置有雷与无
- 简介springmvc对json的前后台传输做了很好封装,避免了重复编码的过程,下面来看看常用的@ResponseBody和@Request
- 一、示例代码访问 localhost:8080/jsonTest —— 返回 json 格式的数据@
- 方案实施1、 spring和ehcache集成主要获取ehcache作为操作ehcache的对象。spring.xml中注入ehcacheM
- 简介简单的文本编译器,可以通过弹出对话框打开文件,进行编写并保存文件。代码package Code.a;import java.io.*;i
- 如今代码圈很多做网络爬虫的例子,今天小编给大家分享的是如何用C#做网络爬虫。注意这次的分享只是分享思路,并不是一整个例子,因为如果要讲解一整
- java:使用匿名类直接new接口java中的匿名类有一个倍儿神奇的用法,见下面代码示例:package contract;public i
- 本文实例讲述了C#编程实现统计文件夹内文件和隐藏文件的方法。分享给大家供大家参考,具体如下:C#统计文件夹内的文件,包括隐藏文件,显示那个隐
- 本文实例讲述了Spring和Hibernate的整合操作。分享给大家供大家参考,具体如下:一 web配置<?xml version=&
- springboot+spring data jpa实现新增及批量新增spring data jpa (以下简称jpa)。这个orm其实和m
- 一、前言在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们一起来学习一下。二、String类概述string
- 今天学习了Mybatis执行存储,感觉不是那么好用,可能是我没用习惯。我先在SQLSERVER创建存储alter procedure usp
- 前言之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理