oj 2325 Problem C 查找【数组】

来源:互联网 发布:细说php第二版微盘 编辑:程序博客网 时间:2024/06/06 02:13

问题及代码

题目描述

利用search(a,n,k)函数在数组a的前n(n>=1)个元素中找出前k个(1<=k<=n)小的值。假设数组a中各元素的值都不相同。

输入

数组中各元素

n k

输出

a中前k个小的值

样例输入

5 6 2 1 4 85 78 117 4

样例输出

5 2 1 4
代码
/*烟台大学计算机与控制工程学院 2016作者: 马春澎题目名称:oj 2325 Problem  C 查找【数组】完成日期:2017年3月31日 */#include<stdio.h>int main(){    int a[20],c[20];    int i,j,k,n,temp;    char x;    for(i=0; i<20; i++)    {        scanf("%d%c",&a[i],&x);        if(x=='\n')            break;    }    scanf("%d%d",&n,&k);    for(i=0; i<n; i++)        c[i]=a[i];    for(i=0; i<n; i++)    {        for(j=0; j<n-i-1; j++)        {            if(a[j]>a[j+1])            {                temp=a[j];                a[j]=a[j+1];                a[j+1]=temp;            }        }    }    for(i=0; i<n; i++)    {        if(c[i]<=a[k-1]&&i<k)            printf("%d ",c[i]);        else if(c[i]<=a[k-1]&&i==k)            printf("%d",c[i]);    }    return 0;}
总结:可先将数组进行排序找到第k个数,然后与原数组进行比较,原数组中小于他的输出,注意最后一个数后面没有空格。


0 0