关于快速排序可以参看此篇博客https://blog.csdn.net/qq_28584889/category_8722100.html
由于分享的链接对于快速排序讲解的足够详细,我就不再重复啦。
根据所学视频,对于快排要在理解的基础上记住模板,同时在写代码时注意越界问题!
题目:
代码:
#include<iostream>
using namespace std;
const int N = 1e5+10; //防止越界
int n;
int q[N];
void quick_sort(int q[],int l,int r){
if(l>=r)return ; //数列中只有一个数时
int x=q[l+r>>1],i=l-1,j=r+1; //注意边界
while(i<j){
while(q[++i]<x); //i向前
while(q[--j]>x); //j向后
if(i<j)swap(q[i],q[j]);
}
// 注意是用j而不是i
quick_sort(q,l,j); //递归处理左右两边
quick_sort(q,j+1,r);
}
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>q[i];
quick_sort(q,0,n-1);
for(int i=0;i<n;i++)cout<<q[i]<<' ';
return 0;
}
内置函数sort()
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100010;
int q[N];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>q[i];
sort(q,q+n);
for(int i=0;i<n;i++) cout<<q[i]<<' ';
return 0;
}