首页 > 试题广场 >

【模板】排序

[编程题]【模板】排序
  • 热度指数:15351 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个长度为 n 的整数数组 A(允许元素重复),请将其按非递减顺序排序并输出。

输入描述:
\hspace{15pt}第一行输入整数 n\left(1\leqq n\leqq 10^5\right),表示数组长度。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(-10^9\leqq a_i\leqq 10^9\right)


输出描述:
\hspace{15pt}在一行上输出排序后的数组,各元素以空格分隔。
示例1

输入

5
5 4 3 2 1

输出

1 2 3 4 5
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        // 使用BufferedReader提高输入效率,适合处理大规模输入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        // 读取数组元素
        String[] parts = br.readLine().split(" ");
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(parts[i]);
        }

        // 排序数组(非递减顺序)
        Arrays.sort(arr);

        // 构建输出字符串
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            if (i > 0) {
                sb.append(" ");
            }
            sb.append(arr[i]);
        }

        // 输出结果
        System.out.println(sb.toString());
    }
}

发表于 2025-08-29 12:34:39 回复(0)
n = int(input())
print(' '.join(map(str,sorted(list(map(int,input().split()))))))
发表于 2025-08-25 22:40:58 回复(0)
#include <bits/stdc++.h>

#define x first
#define y second

using namespace std;

typedef long long LL;
typedef pair<int, int> PII;

const int N = 1e5 + 10;

int n, w[N];

void quick_sort(int l, int r) {
    if (l >= r) return;
   
    // 选择中间元素作为基准值
    int v = w[l + r >> 1];
    int i = l - 1, j = r + 1;
   
    while (i < j) {
        while (w[++i] < v);   // 从左向右找第一个 >= v 的元素
        while (w[--j] > v);   // 从右向左找第一个 <= v 的元素
        if (i < j) swap(w[i], w[j]);
    }
   
    // 关键修正:只有当子区间长度大于0时才递归,防止全相等元素导致的无限递归
    // 循环结束后,j 的位置满足:w[l..j] <= v, w[j+1..r] >= v
    if (l < j) quick_sort(l, j);         // 左半部分递归
    if (j + 1 < r) quick_sort(j + 1, r); // 右半部分递归
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    cin >> n;
    // 数组下标从 1 开始,符合用户习惯
    for (int i = 1; i <= n; ++i) cin >> w[i];

    quick_sort(1, n);

    for (int i = 1; i <= n; ++i) cout << w[i] << ' ';
    cout << '\n';

    return 0;
}
发表于 2026-04-11 18:36:36 回复(1)
虽然用的是python,但是不建议用sorted偷懒,毕竟题目太简单了,用sorted的话这题考什么呢?哪怕不用高级算法,随便写一个排序都行的。
a = int(input())
b = list(map(int,input().split()))
for i in range(a):
    for j in range(i,a):
        if b[i] > b[j]:
            x = b[i]
            b[i] = b[j]
            b[j] = x
print(" ".join(map(str,b)))


发表于 2026-04-10 15:32:52 回复(0)
#include <iostream>
#include<algorithm>

using namespace std;

const int MaxN = 100000;
int a[MaxN];

int main() {
    int n;
    while (cin >> n) {
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        sort(a, a + n);
        for (int i = 0; i < n; i++) {
            cout << a[i] << (i == n - 1 ? "" : " ");
        }
        cout << endl;
    }
}
// 64 位输出请用 printf("%lld")

发表于 2026-04-01 15:59:41 回复(0)
a = int(input())
b = [int(i) for i in input().split()]
c = ''
for i in sorted(b):
    c+=str(i)+' '
print(c)
发表于 2026-03-01 16:34:27 回复(0)
using System ;
using System.Collections.Generic;
public class Program {
    public static void Main() {
        string line=Console.ReadLine();
        line=Console.ReadLine();
        string[ ] parts = line.Split( );
        List<int > ans =new List<int >();

        foreach(string s in parts ){
            ans.Add( int .Parse(s) );
        }
        ans .Sort();
        Console.WriteLine(string .Join(' ', ans) );

        
    }
}

发表于 2026-02-24 17:37:58 回复(0)
数字太大了只能使用时间复杂度低的排序算法
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    int int_a = *(const int *)a;
    int int_b = *(const int *)b;
    if(int_a < int_b){
        return -1;
    }
    if(int_a > int_b){
        return 1;
    }
    return 0;
}

int main() {
    int n;
    while(scanf("%d", &n) != EOF) {
        int* A = (int*)malloc(n * sizeof(int));
        for (int i = 0; i < n; i++) {
            scanf("%d", &A[i]);
        }
        //数字太大了只能使用时间复杂度低的排序算法
        qsort(A, n, sizeof(int), compare);
        for (int i = 0; i < n; i++) {
            printf("%d ", A[i]);
        }
        printf("\n");
        free(A);
    }
    return 0;
}


发表于 2026-02-17 23:40:36 回复(0)
n = int(input())
lst = list(map(int,input().split()))  
sorted_lst = sorted(lst)   
print(' '.join(map(str,sorted_lst)))
发表于 2026-02-04 16:15:32 回复(0)
#include <iostream>
using namespace std;
//归并排序
void merge(int a[],int l,int mid,int r){
    int temp[r-l+1];
    int k=0;
    int p1=l;
    int p2=mid+1;
    while(p1<=mid&&p2<=r){
        if(a[p1]<=a[p2]){
            temp[k++]=a[p1++];
        }
        else temp[k++]=a[p2++];
    }
    while(p1<=mid){
        temp[k++]=a[p1++];
    }
    while(p2<=r){
        temp[k++]=a[p2++];
    }
    for(int i=0;i<k;i++){
        a[l+i]=temp[i];
    }
}
void process(int a[],int l,int r){
    if(l==r){
        return;
    }
    int mid=l+((r-l)>>1);
    process(a,l,mid);
    process(a,mid+1,r);
    merge(a,l,mid,r);
}
int main() {
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    process(a,0,n-1);
    for(int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
}
发表于 2026-01-21 20:55:36 回复(0)
#include <iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<functional>
int main() {
   int n;
   cin>>n;
   vector<int>v;
   int a;
   while(cin>>a){
      v.push_back(a);
   }
   sort(v.begin(),v.end());
   for_each(v.begin(),v.end(),[=](int a){
       cout<<(a)<<" ";
   });
}
// 64 位输出请用 printf("%lld")

发表于 2026-01-16 21:14:21 回复(0)
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
typedef long long LL;

int n,b;
vector <LL> a;

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> b;
        a.push_back(b);
    }
    sort(a.begin(),a.end());

    for(auto v : a)
    cout << v << " ";
    return 0;
}
发表于 2026-01-12 19:41:07 回复(0)
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a,const void *b){
    return (*(int*)a-*(int*)b);
}
int main() {
    int n;
    scanf("%d",&n);
    int *arr=(int*)malloc(n*sizeof(int));
    for(int i=0;i<n;i++){
        scanf("%d",&arr[i]);
    }
    qsort(arr,n,sizeof(int),compare);
    for(int i=0;i<n;i++){
        if(i>0) printf(" ");
        printf("%d",arr[i]);
    }
    printf("\n");
    free(arr);
    return 0;
}

发表于 2026-01-05 08:59:29 回复(0)
数组输入,sort()函数处理,输出数组
#include <iostream>
#include<vector>
#include<algorithm>
typedef long long ll;
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n;
    cin>>n;
    vector<ll>nums;
    for(ll i = 0;i < n;i++){
        ll tmp;
        cin>>tmp;
        nums.push_back(tmp);
    }
    sort(nums.begin(),nums.end());
    for(ll i = 0; i < n ;i++){
        cout<<nums[i];
        if(i != n -1){
            cout<<' ';
        }
    }
    cout<<'\n';
}
// 64 位输出请用 printf("%lld")
发表于 2025-12-23 23:03:51 回复(0)
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> arr(n); for (int i = 0; i < n; ++i) { cin >> arr[i]; } sort(arr.begin(), arr.end()); for (int i = 0; i < n; ++i) { if (i > 0) cout << " "; cout << arr[i]; } cout << endl; return 0; }
编辑于 2025-12-22 22:09:41 回复(0)
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <string>
#include <vector>

//using namespace std;



int main() {
    int len, a;
    std::vector<int> arr;
    
    scanf("%d\n", &len);
    
    for(int i = 0;i<len; i++)
    {
        scanf("%d ",&a);
        arr.push_back(a);
    }

    std::sort(arr.begin(),arr.end());
    for(int i = 0;i<len; i++)
    {
        printf("%d ",arr[i]);
    }

    return 0;
}

发表于 2025-12-14 14:04:29 回复(0)
#include <iostream>
using namespace std;
long long a[100005];
void quickSort(long long left,long long right){
    if(left>right)return;
    long long i=left,j=right,mid=(right+left)/2;
    long long p=a[mid];
    while(i<=j){
        while(a[i]<p)i++;
        while(a[j]>p)j--;
        if(i<=j){
        swap(a[i],a[j]);
        i++,j--;
        }
    }
    if(left<j)quickSort(left,j);
    if(right>i)quickSort(i,right);
}
int main() {
    long long n;
   
    cin>>n;
    for(long long i=1;i<=n;i++){
        cin>>a[i];
    }
    quickSort(1,n);
    for(long long i=1;i<=n;i++){
        printf("%lld ",a[i]);
    }
    return 0;
}
发表于 2025-12-08 17:01:59 回复(0)
#include <math.h>
#include <stdio.h>
int LAB_FUN(const void* e1,const void* e2){
    return *(int*)e1 - *(int*)e2;
}
int main() {
   int n;
   scanf("%d",&n);
   int arr[n];
   int sc = sizeof(arr) / sizeof(arr[0]);
   for(int i = 0;i < n;i++){
    scanf("%d",&arr[i]);
   }
   qsort(arr,sc,sizeof(arr[0]),LAB_FUN);
   for(int i = 0;i < sc;i++){
    printf("%d ",arr[i]);
   }
}
发表于 2025-11-24 22:50:54 回复(0)
不用解包,更快一点
import sys

n = input().strip()
row =list(map(int,input().strip().split()))
row.sort(reverse=False)
new = [str(y) for y in row]
print(' '.join(new))

发表于 2025-11-20 14:26:10 回复(0)
n = int(input())
s = input().split(' ')

s1 = []
for i in s:
    s1.append(int(i))

s1.sort()
print(*s1)

发表于 2025-10-24 21:56:44 回复(0)