zoukankan      html  css  js  c++  java
  • 九度OJ 1174:查找第K小数 (排序、查找)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6376

    解决:2539

    题目描述:

    查找一个数组的第K小的数,注意同样大小算一样大。 
    如  2 1 3 4 5 2 第三小数为3。

    输入:

    输入有多组数据。
    每组输入n,然后输入n个整数(1<=n<=1000),再输入k。

    输出:

    输出第k小的整数。

    样例输入:
    6
    2 1 3 5 2 2
    3
    样例输出:
    3
    来源:
    2010年北京邮电大学网院研究生机试真题


    思路:

    先排序后查找,如果K特别大或小也可以直接查找。

    我这个代码是以前写的,没有考虑复杂度。


    代码:

    #include <stdio.h>
     
    #define N 1000
     
    int main(void)
    {
        int n, k, i, j;
        int a[N], tmp;
     
        while (scanf("%d", &n) != EOF)
        {
            for(i=0; i<n; i++)
                scanf("%d", &a[i]);
            scanf("%d", &k);
     
            for(i=0; i<n-1; i++)
            {
                for(j=0; j<n-1-i; j++)
                {
                    if (a[j] > a[j+1])
                    {
                        tmp = a[j];
                        a[j] = a[j+1];
                        a[j+1] = tmp;
                    }
                }
            }
     
            int count = 0;
            for (i=0; i<n; i++)
            {
                if (i>0 && a[i] == a[i-1])
                    continue;
                count ++;
                if (count == k)
                {
                    printf("%d
    ", a[i]);
                    break;
                }
            }
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1174
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:912 kb
    ****************************************************************/
    


    编程算法爱好者。
  • 相关阅读:
    周末毒鸡汤时间
    MySQL 8.0发布,你熟悉又陌生的Hash Join?
    你可能需要的Kafka面试题与答案整理
    流程控制结构
    视图
    事务
    常用约束
    sql99语法的连接查询
    数据类型
    数据操作语句(DML)
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083853.html
Copyright © 2011-2022 走看看