洛谷p1177快速排序超时?

问题遇到的现象和发生背景

洛谷p1177题:
利用快速排序算法将读入的 N 个数从小到大排序后输出。

快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)

输入格式
第 1 行为一个正整数 N,第 2 行包含 N 个空格隔开的正整数 a[i],为你需要进行排序的数,数据保证了 A[i]不超过 10^9

输出格式
将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。

问题相关代码,请勿粘贴截图

#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],n;
void qsort(int L,int R)
{
if(L>=R) return;
int l=L,r=R;
int mid=a[(L+R)>>1];
while(l<r)
{
while(a[r]>mid&&l<r) r--;
while(a[l]<mid&&l<r) l++;
if(l<r) swap(a[l],a[r]);
}
qsort(L,l);
qsort(l+1,R);
}
int main()
{
while(~scanf("%d",&n))
{
//memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
qsort(1,n);
for(int i=1;i<=n;i++)
{
if(i!=n) printf("%d ",a[i]);
else printf("%d",a[i]);
}
printf("\n");
}
return 0;
}

运行结果及报错内容

洛谷五个测试点AC第一个,后面全部TLE。

我的解答思路和尝试过的方法

在网上查了很多东西,修改了好几次,最后用了带swap的代码,依旧TLE。

我想要达到的结果

希望有人指点,感激不尽

你这写的也不是快排啊,快排是每一次排序都让一个数在最终位置,你这一次排序后并不能实现啊

qsort(L,l);
改成
qsort(L,l-1);