阿白| 2021-11-21 15:16 采纳率: 91.7%
浏览 64
已结题

如何缩短该代码的运行时间?

题目描述
又是一年秋招季,小明手握N个offer(就是企业的录用意向),薪资有高有低,待遇也各有不同,为了方便选择,他对每个offer进行了评分(评分越高越好),但是他不想找最高的也不想找最低的,而是想找一个排名等于他幸运数字的,希望你可以帮帮他。
输入
第一行一个整数N(1<=N<=1000000),表示offer数量。
第二行N个整数,代表offer评分(无序),评分保证大于1,小于1000000,可能存在重复的评分。
第三行一个整数,代表幸运数字L(1<=L<=N)
输出
一个数字,表示小明选择的那个的offer评分。
样例输入 Copy
4
90 28 233 115
2
样例输出 Copy
115

//如果代码错了的话也请指点(手动狗头)
#include<stdio.h>
int main()
{
    int n,t,p,i,j,a[1000000]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&p);
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]<a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    printf("%d",a[p-1]);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • -Undefined_ 2021-11-21 16:37
    关注

    快排

    #include <stdio.h>
    int a[1000000], n, temp;
    int findk(int num[], int k, int s, int e) {
        int l = s, h = e, t = num[l];
        while(l < h) {
            while(l < h && num[h] <= t) {
                h--;
            }
            num[l] = num[h];
            while(l < h && num[l] >= t) {
                l++;
            }
            num[h] = num[l];
        }
        num[h] = t;
        if(h == k - 1)
            return t;
        else if(h > k - 1)
            return findk(num, k, s, h - 1);
        else
            return findk(num, k, h + 1, e);
    }
    int find(int num[], int k, int n) {
        return findk(num, k, 0, n - 1);
    }
    int main() {
        int i, p;
        scanf("%d", &n);
        for(i = 0; i < n; i++)
            scanf("%d", &a[i]);
        scanf("%d", &p);
        printf("%d", find(a,p,n));
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月24日
  • 已采纳回答 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改