若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2325: 查找【数组】

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,338

题目描述

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

输入

数组中各元素
n k

输出

a中前k个小的值

样例输入

5 6 2 1 4 85 78 11
7 4

样例输出

5 2 1 4

参考代码

#include<stdio.h>
#include<string.h>
int b[1000];
void sorta(int a[],int n) 
{
    int i,j,t,k;
    for (i=0;i<n;i++) 
    {
        k=i;
        for (j=i+1;j<n;j++) 
        {
            if(a[k]>a[j])
                            k=j;
        }
        t=a[k];
        a[k]=a[i];
        a[i]=t;
        t=b[k];
        b[k]=b[i];
        b[i]=t;
    }
}
void sortb(int a[],int k) 
{
    int i,j,t,k0;
    for (i=0;i<k;i++) 
    {
        k0=i;
        for (j=i+1;j<k;j++) 
        {
            if(b[k0]>b[j])
                            k0=j;
        }
        t=a[k0];
        a[k0]=a[i];
        a[i]=t;
        t=b[k0];
        b[k0]=b[i];
        b[i]=t;
    }
}
void search(int a[],int n,int k) 
{
    int i,x;
    sorta(a,n);
    sortb(a,k);
    for (i=0;i<k;i++) 
    {
        printf("%d",a[i]);
        if(i!=k-1)
                    printf(" ");
    }
    printf("n");
}
int main()
{
    int a[1000];
    int n,k,i;
    char c;
    for(i=0;;i++)
    {
        scanf("%d%c",&a[i],&c);
        b[i]=i;
        if(c!=' ')
            break;
    }
    scanf("%d%d",&n,&k);
    search(a,n,k);
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Skip Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist