云南手工活外发加工网,成都网站制作实力乐云seo,电子商务网站建设理解,无代码网站开发平台有哪些【题目来源】https://www.acwing.com/problem/content/787/【题目描述】 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。【输入格式】 输入共两行#xff0c;第一行包含整数 n。 第二行包含 n 个整数#…【题目来源】https://www.acwing.com/problem/content/787/【题目描述】 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。【输入格式】 输入共两行第一行包含整数 n。 第二行包含 n 个整数所有整数均在 1∼10^9 范围内表示整个数列。【输出格式】 输出共一行包含 n 个整数表示排好序的数列。【数据范围】 1≤n≤100000【输入样例】 5 3 1 2 4 5【输出样例】 1 2 3 4 5【算法分析】 历史上发过两篇关于快速排序的博文链接如下https://blog.csdn.net/hnjzsyjyj/article/details/127825125https://blog.csdn.net/hnjzsyjyj/article/details/119768770 但是在提交至本题时一直提示 Time Limit Exceeded。估计是本题数据加强的原因。同学们可自行分析原因。【算法代码】
#include bits/stdc.h
using namespace std;const int maxn1e55;void quicksort(vectorint v, int le, int ri) {if(leri) return;int midv[leri1];//交换时i的初始值为le-1以保证选择到第一个大于mid的数v[i]//交换时j的初始值为ri1以保证选择到第一个小于mid的数v[j]int ile-1;int jri1;while(ij) {while(v[i]mid){};while(v[--j]mid){};if(ij) swap(v[i],v[j]);}quicksort(v,le,j);quicksort(v,j1,ri);
}int main() {int n;scanf(%d, n);vectorint v;for(int i0; in; i) {int x;scanf(%d, x);v.push_back(x);}quicksort(v,0,n-1);for(int i0; in; i) printf(%d ,v[i]);return 0;
}/*
in:
30
128 294 133 295 175 8 232 248 241 164 11 60 238 133 291 116 6 67 98 67 196 260 181 160 83 160 90 153 233 216out:
6 8 11 60 67 67 83 90 98 116 128 133 133 153 160 160 164 175 181 196 216 232 233 238 241 248 260 291 294 295
*/【参考文献】https://blog.csdn.net/a695484357/article/details/126242857https://www.acwing.com/problem/content/solution/787/1/