华为OJ训练之0006-161229-输出前k个最小数字

来源:互联网 发布:淘宝销售软件下载 编辑:程序博客网 时间:2024/06/06 14:19

题目

===========================================

输入n个整数,输出其中最小的k个。
详细描述:
接口说明
原型:
bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);
输入参数:
unsignedint uiInputNum //输入整数个数
int * pInputArray //输入整数数组
unsignedint uiK //需输出uiK个整数
输出参数(指针指向的内存区域保证有效):
int * pOutputArray //最小的uiK个整数
返回值:
false 异常失败
true 输出成功

一次通过
100分

===========================================

import java.util.Scanner;//输入n个整数,输出其中最小的k个。//详细描述://接口说明//原型://bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);//输入参数://     unsignedint uiInputNum //输入整数个数//int * pInputArray  //输入整数数组//unsignedint uiK   //需输出uiK个整数//输出参数(指针指向的内存区域保证有效)://    int * pOutputArray //最小的uiK个整数//返回值://        false 异常失败//          true  输出成功public class oj006 {    public void getMinK(int[] number,int k)    {        for(int j=0;j<k;j++)              //取出k次最小值        {        int min=Integer.MAX_VALUE;        int minIndex=-1;            for(int i=0;i<number.length;i++)         //找出最小数        {            if(number[i]<min){min=number[i];minIndex=i;}        }            if(minIndex!=-1)                           //存在就输出            {                if(j==k-1){System.out.print(min+"\n");} //输出格式                else {System.out.print(min+" ");}            }            number[minIndex]=Integer.MAX_VALUE;           //将此轮最小数删除 便于下次找        }    }    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        int n=scanner.nextInt();        int k=scanner.nextInt();        int[] number=new int[n];        for(int i=0;i<n;i++)        {            number[i]=scanner.nextInt();        }        new oj006().getMinK(number, k);    }}
0 0
原创粉丝点击