快速排序

本文详细介绍了快速排序算法的原理与实现过程,包括基本运算步骤、稳定性分析及递归调用方式,最后展示了排序结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速的特征
时间复杂度:O(n*lgn)
最坏:O(n^2)
空间复杂度:O(n*lgn)
不稳定。

  1. 一、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4}

    C语言排序算法:[1]教你理解快速排序。
  2. 2

    二、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别指向数组第一个元素和最后一个元素。

    C语言排序算法:[1]教你理解快速排序。
  3. 3

    三、算法的基本运算步骤为:1、依次比较数组的后游标所指与temp的大小,如果temp<a[j],则j--,直到遇到第一个temp>a[j],则停止移动,将a[j]赋值给a[i]

  4. 4

    四、算法的基本运算步骤为:2、依次比较数组的前游标所指与temp的大小,如果temp>a[i],则i++,直到遇到第一个temp<a[i],则停止移动,将a[i]赋值给a[j]

  5. 5

    五、算法运算步骤为:3、判断i是否等于j,如果不相等则循环1、2步,直到i等于j,则完成一次快速排序。

    C语言排序算法:[1]教你理解快速排序。
  6. 6

    六、算法解释:这样一次循环做完后结果就是比temp小的尽量放在temp前,比temp大的尽量放在temp后。但是这种顺序不是稳定的,会有调整。因此快速排序不是一种稳定的排序。以下是实现程序。

    C语言排序算法:[1]教你理解快速排序。
  7. 7

    七、一次排序完之后在分别对temp前的数组元素和temp后的数组元素分别进行快排,直到数组元素个数为1则停止。

    C语言排序算法:[1]教你理解快速排序。
  8. 8

    八、运行结果如下:

    C语言排序算法:[1]教你理解快速排序。
    END

注意事项

  • 快排用到的挖坑填数和分治法使得其时间复杂度大部分情况下为n*logn,被广泛使用并考察。
  • 如果这篇经验对您有帮助,希望您不吝评论、投票、收藏,您的支持是对我最大的鼓励。--坐标X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值