上方没有C#实现,我补充一下,如下所示:

//快速排序(目标数组,数组的起始位置,数组的终止位置)

static void QuickSort(int[] array, int left = 0, int right = -1)

{

if (right.Equals(-1)) right = array.Length - 1;

try

{

int keyValuePosition; //记录关键值的下标

//当传递的目标数组含有两个以上的元素时,进行递归调用。(即:当传递的目标数组只含有一个元素时,此趟排序结束)

if (left < right)

{

keyValuePosition = Partion(array, left, right); //获取关键值的下标(快排的核心)

QuickSort(array, left, keyValuePosition - 1); //递归调用,快排划分出来的左区间

QuickSort(array, keyValuePosition + 1, right); //递归调用,快排划分出来的右区间

}

}

catch (Exception ex)

{

Console.WriteLine("Exception: {0}", ex);

}

}

///快速排序的核心部分:确定关键值在数组中的位置,以此将数组划分成左右两区间,关键值游离在外。(返回关键值应在数组中的下标)

static int Partion(int[] array, int left, int right)

{

int leftIndex = left; //记录目标数组的起始位置(后续动态的左侧下标)

int rightIndex = right; //记录目标数组的结束位置(后续动态的右侧下标)

int keyValue = array[left]; //数组的第一个元素作为关键值

int temp;

//当 (左侧动态下标 == 右侧动态下标) 时跳出循环

while (leftIndex < rightIndex)

{

while (leftIndex < rightIndex && array[leftIndex] <= keyValue) //左侧动态下标逐渐增加,直至找到大于keyValue的下标

{

leftIndex++;

}

while (leftIndex < rightIndex && array[rightIndex] > keyValue) //右侧动态下标逐渐减小,直至找到小于或等于keyValue的下标

{

rightIndex--;

}

if (leftIndex < rightIndex) //如果leftIndex < rightIndex,则交换左右动态下标所指定的值;当leftIndex==rightIndex时,跳出整个循环

{

temp = array[leftIndex];

array[leftIndex] = array[rightIndex];

array[rightIndex] = temp;

}

}

//当左右两个动态下标相等时(即:左右下标指向同一个位置),此时便可以确定keyValue的准确位置

temp = keyValue;

if (temp < array[rightIndex]) //当keyValue < 左右下标同时指向的值,将keyValue与rightIndex - 1指向的值交换,并返回rightIndex - 1

{

array[left] = array[rightIndex - 1];

array[rightIndex - 1] = temp;

return rightIndex - 1;

}

else //当keyValue >= 左右下标同时指向的值,将keyValue与rightIndex指向的值交换,并返回rightIndex

{

array[left] = array[rightIndex];

array[rightIndex] = temp;

return rightIndex;

}

}

艾孜尔江

艾孜尔江

bju***ft@sina.com3周前 (10-08)

快速排序 python菜鸟教程-1.6 快速排序相关推荐

  1. 快速排序 python菜鸟教程-Python菜鸟文本处理4种方法

    https://www.xin3721.com/eschool/pythonxin3721/ 自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python ...

  2. 快速排序 python菜鸟教程-十大编程算法助程序员走上高手之路

    算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  3. 快速排序 python菜鸟教程-快速排序

    虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤.因此我的对快速排序作了进一步的说明:挖坑填数+分治法: 先来看实例吧,定义下面再给出(最好能用自己的话来总结定义,这样对实 ...

  4. 快速排序 python菜鸟教程-NumPy 排序、条件刷选函数

    NumPy 排序.条件刷选函数 NumPy 提供了多种排序的方法. 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性. 下表显示了三种排序算法 ...

  5. 快速排序 python菜鸟教程-C 排序算法

    有种排序叫做猴子排序(Bogo Monkey): 1.检查是否排好 2.打乱 3.检查是否排好 4.打乱 5.-- 如果数据稍多的话,几乎是不可能排序好的. 排序代码: #include #inclu ...

  6. python 菜鸟-python菜鸟教程

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 除了常见的循环控制语句,python 中还有if,if else和if ...

  7. python菜鸟教程官网pandas,python菜鸟教程官网numpy

    求比较好的Python练习网站 适合 Python 入门学习的5个网站1. Python官方网站最权威的 Python 教程.2. 菜鸟教程 Python 教程基本入门级教程,还有一些简单的进阶教程. ...

  8. python菜鸟教程100实例-运维人员学习python菜鸟教程

    这篇文章主要为大家详细介绍了运维人员学习python菜鸟教程,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 从不会写代 ...

  9. python菜鸟教程官网绘图-NumPy Matplotlib

    NumPy Matplotlib Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 P ...

最新文章

  1. Zoom重金并购25人安全初创公司,市值一夜大涨23亿美元
  2. VScode操作记录
  3. Matlab中巧用LaTex
  4. Entity Framework Unit Testing problem and solution(转)
  5. plsql developer导入导出序列方法
  6. HAS_NO_PRIVILEGE解决方案
  7. 卫星系统——酒店后端全链路日志收集工具介绍
  8. python自定义全局异常_如何在python中进行全局异常捕获
  9. 【数据结构】栈的存储实现
  10. C#中的四舍五入有多坑
  11. java多线程(一)——创建与启动线程
  12. 微信电脑版重大更新,可以上班刷朋友圈摸鱼了
  13. SpringBoot 2.3.x gradle源码构建
  14. usb, micro-usb card 损坏, 数据恢复
  15. 无人驾驶技术的发展趋势
  16. 小米 win10 android 双系统,PC平板二合一 运行win10/安卓双系统
  17. 单片机串口通信的多字节传输
  18. 2021BI及数据可视化领域最具商业合作价值企业盘点
  19. 带你走进API安全的知识海洋
  20. Excel如何提取身份证中出生年月日、计算年龄、性别

热门文章

  1. [剑指offer] 替换空格
  2. 【高德地图开发1】---简介
  3. C 线程池(不稳定的方案)
  4. Linux oracle数据库自动备份自动压缩脚本代码
  5. (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致...
  6. 简单的表单提交 by MVC 2
  7. python代码写完怎么运行-Python 项目代码写完了,然后怎么打包和发布?
  8. python turtle画彩虹-python绘制樱花,彩虹旋等
  9. python程序设计报告-20192116 实验一《Python程序设计》实验报告
  10. python中文软件-Python编程软件下载