快速排序

开发工具与关键技术:Visual Studio / 交换排序
作者:郑名方
撰写时间:2020年5月28日

快速排序是一种交换排序。

快速排序的基本思想是:从待排序序列的n 个记录中任取一个记录R1作为基准记录,以基本准则记录为世界限,将待排序序列划分成为两个子序列,所有关键字小于K1的记录移到R1的前面,所以关键字大于K1的记录移到R1的后面,这个过程叫做一趟快速排序。把快速排序放到合适的位置这个过程叫做一趟快速排序。
然后快速排序用同样的方法对应两个子序列排序,得到四个子序列;以此类推,直到每个子序列只有一个记录为止,此时就得到n个记录的有序序列。
作为基准记录如果我们要把它从小到大排序的话,使得这个基准记录的左边都有比基准记录小;右边都有比基准记录大。
下面是快速排序过程图。
在这里插入图片描述
就是需要i 和j两个指显器,上面图中的i 是指左边,它应该比基准记录要小;所以j是指向数据应该要比基准记录要大。如果没有满足我们的要求,我们要进行一定的处理。要怎么处理呢?首先我们把控制权给到j,先把这个基准记录备份起来,j所指向的值是16,16比29要小,其实它就不应该在右边,所以其实j所指向的值
据然要比29要小,那么它就必须把控制权交给i,也就是说,把16这个应该放在左边的值放在i所指向的位置。
下面是快速排序是代码。
在这里插入图片描述

完整的快速排序算法还有对基准关键字左右的分支区间运用划分算法,直至整个区间有序!
下面图片是快速排序的递归算法描述。
在这里插入图片描述
一趟快速排序之后并没有整个的排完还需要借助递归的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值