新手笔记之快速排序

快速排序是一种由东尼·霍尔提出的排序算法,平均时间复杂度为O(nlogn),在许多情况下表现优于其他O(nlogn)算法。它采用分治策略,将数列分为两部分并递归排序。本文将介绍快速排序的算法步骤及代码实现。
摘要由CSDN通过智能技术生成
  1. 简介:

    快速排序是由东尼·霍尔所发展的一种排序算法。
    在平均状态下,排序n个项目要O(nlogn)次比较,在最坏的状态下则需要O(n²)次比较,但这种情况并不常见。
    事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环(inner loop)可以在大部分架构上很有效率的被实现出来。
    快速排序使用分治法策略来吧一个串行分为两个子串行,通俗来讲就是把一个数列变成了两个数列。
    快速排序又是一种分而治之思想在排序算法上的典型应用,从本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法
    快速排序非常的快,并且效率高,它是处理大数据最快的排序算法之一,在大多数情况下都比平均时间复杂度为 O(n logn) 的排序算法表现要更好。

    这是在《算法艺术与信息学竞赛》中的解释:
    快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平摊期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多。所以,对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序。

  2. 算法步骤:

    • 从数列中挑出一个元素,把它叫做基准值.
    • 重新排序数组,所有比基准值小的数排在基准值的左边,所有比基准值大的数排在基准值的右边,等于基准值的数可在排在任意一边
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值