AcWing算法专题——快速排序
文章目录
前言
现在我们开始进入算法模块,在分享数据结构的知识的同时开始分享编程的算法,欢迎大家交流,有不对的地方欢迎大家斧正,也希望大家集思广益,拓展思维。
一、快速排序的核心
快速排序的核心思想是——分治。
何为分治,也就是说将一个完整的区间分成两个区间,这两个区间不一定等分,但快速排序算法的难点不在于怎么分治,在于边界问题的处理,如果边界问题处理不到位很有可能会出现各种各样的错误,比如陷入死循环,算法难度不大,但是有一些细节问题还是得注意不然就会运行失败。
二、算法图示
如果满足q[i]<x,那就说明i这个位置放的是对的,就让i向后移动,直到不满足条件停止
同理j向前移动,不满足的时候停止,两个都停止了就交换两个的位置,然后判断递归是否停止,如果不停止继续递归
三、算法代码
void quick_sort(int q[], int l, int r)
{
//递归的终止情况
if(l