大雪菜的课(笔记)
基础算法(一)
1.排序
(1).快速排序
模板(快速排序算法模板 —— 模板题 AcWing 785. 快速排序):
//边界问题!边界问题!边界问题!
//代码1
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(i<j){
do i++; while(x>q[i]);
do j--; while(x<q[j]);
if(i<j) swap(q[i],q[j]);
}
quick_sort(q,l,j),quick(q,j+1,r);
}
代码2
void quick_sort(int q[],int l,in r){
if(l>=r) return;
int i=l-1,j=r+1,x=q[l+r+1>>1];
while(i<j){
do i++; while(x>q[i]);
do j--; while(x<q[j]);
if(i<j) swap(q[i],q[j]);
}
quick_sort(q,l,i-1),quick(q,i,r);
}
AcWing785. 快速排序
给定你一个长度为n的整数数列。
请你使用快速排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。