我发现了一种更简洁的C++快速排序双指针写法
意义
教学更加高效,简便.
学生学起来更容易理解,记忆.
源代码
#include<cstdio>
#include<algorithm>
using namespace std;
int n, a[100009];
void quicksort(int l,int r){
if(l>=r) return;
int x=a[l], i=l, j=r;
while(i<=j){ // 我改进的地方
if(a[i]<x) i++;
else if(a[j]>x) j--;
else swap(a[i++],a[j--]);
}
quicksort(l, j);
quicksort(i, r);
}
int main(){
scanf("%d", &n);
for(int i=1;i<=n;++i)
scanf("%d", &a[i]);
quicksort(1,n);
for(int i=1;i<=n;++i)
printf("%d ", a[i]);
}
/**************************************************************
Problem: 1169
User: Teacher0029[陈老师]
Language: C++
Result: 正确
Time:56 ms
Memory:1584 kb
****************************************************************/