算法基础学习|01快速排序——分治

一、思路

(1)确定分界点

q[l],q[(l+r)/2],q[r]随机

(2)调整范围

左边<=x,右边>=x

(3)递归处理左右两段

二、题目练习

三、快速排序模板

#include
using namespace std;

const int N=1e6+10;

int q[N];

void quick_sort(int q[],int l,int r)
{
	if(l>=r)return;
	
	int i=l-1,j=r+1,x=q[l+r>>1];
	while(ix);
		if(i
include
using namespace std;

const int N=1e5+10;
int q[N];
int n,k;

int quick_sort(int l,int r,int k)
{
	if(l==r)return q[l];
	
	int i=l-1,j=r+1,x=q[(l+r)>>1];
	
	while(ix);
		if(i

你可能感兴趣的:(算法学习,学习,c++,算法)