m0_64414562 2022-12-22 19:09 采纳率: 0%
浏览 20

图上的问题怎么解决呀?

img

img

#include <stdio.h>
#define PI 1000000
int main()
{
    int i,j,n,m,temp,t;
    int a[PI];
    scanf("%d %d",&n,&m);
    if(n<m)
    {
        t=n;
        n=m;
        m=t;
    }
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0; i<n-1; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(a[j]>a[i])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for(i=0; i<m; i++)
    {
        if(i==0)
            printf("%d",a[i]);
        else
            printf(" %d",a[i]);
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 会修bug的猫 2022-12-22 19:21
    关注

    两种方法
    1.使用快速排序,希尔排序,堆排序或者其他更快速的排序方法
    2.因为M<=10,值很小,完全可以暴力遍历原数组M遍,即可得到前M大的数字

    评论 编辑记录

报告相同问题?

问题事件

  • 请采纳用户回复 12月25日
  • 创建了问题 12月22日