阿白| 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日

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题