题目描述
对数组的元素按从小到大进行排序。
输入
第一行有一个整数 𝑛n ( 5≤𝑛≤105≤n≤10 );
第二行有 𝑛n 个整数,每个整数的值在 [0,109][0,109] 的范围内。
输出
输出排序后的数组。
样例输入
8
1 2 3 6 8 7 4 5
样例输出
1 2 3 4 5 6 7 8
我将通过这一题同时展现 不同排序的AC代码
AC代码(普通最简代码)
#include <bits/stdc++.h>
using namespace std;
int n,i,a[15];
int main(){
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for(i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
快速排序(底层代码)
#include<bits/stdc++.h>
using namespace std;
int n,a[20];
void quick(int l,int r){
int mid=a[(l+r)/2];
int i=l,j=r;
while(i<=j){
while(a[i]<mid) i++;
while(a[j]>mid) j–;
if(i<=j){
swap(a[i],a[j]);
i++,j–;
}
}
if(l<j) quick(l,j);
if(i<r) quick(i,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
quick(1,n);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
冒泡排序(底层代码)优化版时间复杂度变低
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,f,a[10005];
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<n;i++){
f=1;
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
f=0;
}
}
if(f==1) break;
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
选择排序(底层代码)
#include<bits/stdc++.h>
using namespace std;
int n,a[20];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<n;i++){
int ma=i;
for(int j=i+1;j<=n;j++){
if(a[ma]>a[j]){
ma=j;
}
}
swap(a[ma],a[i]);
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
插入排序(底层代码)
#include <bits/stdc++.h>
using namespace std;
int n,a[20];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i = 2; i <= n; ++i){
for(int j = i; j > 1; –j){
if(a[j] < a[j – 1]){
swap(a[j],a[j – 1]);
}else{
break;
}
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
总结:总结太多了🤢🤢 我可以后续出一个所有排序的详细介绍包括基本思想、时间复杂度等等想看的可以评论。
![打卡信奥刷题(3584)用C++实现信奥题 P11523 [THUPC 2025 初赛] 摊位分配-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260922020544-6ab1e2783b78e-220x150.png)