列表

详情


HJ58. 输入n个整数,输出其中最小的k个

描述

输入n个整数,找出其中最小的k个整数并按升序输出

本题有多组输入样例

数据范围: ,输入的整数满足

输入描述

第一行输入两个整数n和k
第二行输入一个整数数组

输出描述

从小到大输出最小的k个整数,用空格分开。

示例1

输入:

5 2
1 3 5 7 2

输出:

1 2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 300KB, 提交时间: 2020-11-18

#include "stdio.h"

int main()
{
    int x,y;
    while (scanf("%d %d",&x,&y)!=EOF)
    {
        int tmp[x];        
        scanf("%d",&tmp[0]);
        for (int i=1;i<x;i++)
        {
            scanf("%d",&tmp[i]);
            for (int j=i;j>0;j--)
            {
                if (tmp[j] < tmp[j-1])
                {
                    int tmp1 = tmp[j];
					tmp[j] = tmp[j-1];
                    tmp[j-1] = tmp1;
                }
                else
                {
                    break;
                }
            }
        }
        for (int k=0;k<y;k++)
        {
            printf("%d ",tmp[k]);
        }
        printf("\n");
    }
    
    return 0;
}

C++ 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2017-11-05

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int num, n;
    while(cin>>num>>n){
        int a[num];
        for(int i=0;i<num;i++){
            cin>>a[i];
        }
        sort(a,a+num);
        for(int i=0;i<n-1;i++){
            cout<<a[i]<<' ';
        }
        cout<<a[n-1]<<endl;
    }
    return 0;
}

上一题