首页 > 试题广场 >

【模板】排序

[编程题]【模板】排序
  • 热度指数:12572 时间限制: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
数字太大了只能使用时间复杂度低的排序算法
#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)
#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)