【C++】【排序】快速排序

本文介绍了快速排序的主要思想,通过选取元素作为基准,不断分割数列并递归地进行排序,直到所有元素有序。详细过程包括选取基准元素、比较与交换、终止条件等。此外,还提供了快速排序的动图解释和相关代码实现。
摘要由CSDN通过智能技术生成

1 主要思想

5 2 4 8 6 3 2 4 8 

  1 )从数列端选取第一个元素比如5,经过一次大循环,让此元素位于数列中间。此时数列被分为两部分,小于等于5 以及 大于等于5的。之后对小于等于5的部分数列以及大于等于5的数列再次应用此方法,各自又可以分为两个子部分,循环往复,最后经过回溯,就可以完成排序。排序的终止条件是左边的索引low >= high。

在这里插入图片描述

  2)对于每个循环中的操作是,获取左端第一个元素,存入变量pivot,从右边第一个值开始比较,如果比pivot大或者等于,就不移动,这是希望的,如果比pivot小就将其放入空缺处,也就是第一个元素处。
  此时空缺的位置就转移到后边,再从左边第二个元素起判断,小于或者等于pivot就不移动,否则就移动到后边。
  经过这样的操作,最终在左边索引low等于右边缩影high时,将pivot放入此位置,就完成了此次循环。在此后就开始对pivot前以及后边的数列应用此方法。
在这里插入图片描述

2 动图

此动图来自于菜鸟教程:链接
在这里插入图片描述

3 代码

#include <iostream>
#include <vector>
using namespace std;
vector<int> sort(vector<int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值