阿白| 2021-11-21 07:16 采纳率: 90.2%
浏览 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 08: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日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部