排序算法.2.快速排序(Quick Sort)

快速排序是一种效率较高的排序算法,平均时间复杂度为O(nlogn)。本文介绍了快速排序的基本思想,包括选取基准数、左右指针遍历、交换元素以及递归划分的过程,并提供了C#代码实现快速排序的示例,包括Swap交换函数。
摘要由CSDN通过智能技术生成

相比于冒泡排序算法,快速排序要快的多,一般情况下冒泡排序的时间复杂度是O(n²),而快速排序平均时间复杂度为O(nlogn),可以说是在所有交换排序中时间复杂度最低的一个;但是在个别情况下也会达到和冒泡排序同等的时间复杂度,比如待排序的元素中用于排序的关键字全部相等,或者已经按照完全有序排列,这时候快速排序算法的时间复杂度可能会达到最差O(n²);

快速排序算法思路:

  1. 每次从待排序的元素中取出一个元素作为基准数;
  2. 分别从序列的两边遍历序列,(使用LeftPoint 表示从左边遍历序列时指向的当前遍历元素的索引值,使用RightPoint表示从右边遍历序列时指向的当前遍历元素的索引值,有些数据结构和算法书里也称之为两个哨兵);
  3. 当RightPoint和LeftPoint 未相遇时,分别前进(LeftPoint 向找,RightPoint 向前找) 直到RightPoint 遇到一个比基准数大且LeftPoint 遇到一个比基准数小的值停止,此时交换RightPoint 和LeftPoint 指向的值;
  4. 按照步骤三一直查找,查找结束后将基准数归位,此时将得到这样一个序列,基准书左边的值都比基准数小,基准数右边的值都比基准数大,经过这样一趟排序最终能确定基准数在结果有序序列中的准确的位置;
  5. 排序一
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值