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


    描述

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

    详细描述:

    接口说明

    原型:

    bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);

    输入参数:

         unsignedint uiInputNum //输入整数个数

    int * pInputArray  //输入整数数组

    unsignedint uiK   //需输出uiK个整数

    输出参数(指针指向的内存区域保证有效):

        int * pOutputArray //最小的uiK个整数

    返回值:

            false 异常失败

              true  输出成功

    知识点 循环,数组
    运行时间限制 10M
    内存限制 128
    输入

    输入说明 
    1 输入两个整数 
    2 输入一个整数数组

    输出

    输出一个整数数组

    样例输入 5 2 1 3 5 7 2
    样例输出 1 2
    package com.oj;
    
    import java.util.Scanner;
    public class Test {
    	public static void sinkDown(int[] data,int k,int length){
    		while(2*k<=length){
    			int maxpos = 2*k;
    			if(data[maxpos]>data[maxpos+1])
    				maxpos += 1;
    			if(data[k]>data[maxpos]){
    				int temp = data[maxpos];
    				data[maxpos] = data[k];
    				data[k] = temp;
    				k = maxpos;
    			}else
    				break;
    		}
    	}
    	
    	public static void deleteMin(int[] data,int length){
    		System.out.print(data[1]);
    		data[1] = data[length];
    		length--;
    		sinkDown(data,1,length);
    	}
    	
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		String[] numstr = in.nextLine().split(" ");
    		int num = Integer.parseInt(numstr[0]);
    		int n = Integer.parseInt(numstr[1]);
    		String[] datastr = in.nextLine().split(" ");
    		int[] data = new int[datastr.length+1];
    		//System.out.println("hello ");
    		for(int i = 1;i <= num; i++)
    			data[i] = Integer.parseInt(datastr[i-1]);
    		
    		for(int i = num/2;i >= 1; i--)
    			sinkDown(data,i,data.length);
    		for(int i = 1;i <= n; i++){
    			deleteMin(data,data.length-i);
    			if(i!=n)
    				System.out.print(" ");
    			else 
    				System.out.println();
    		}
    		System.out.println();
    //		for(int i = 1; i <= (num-n) ; i++)
    //			System.out.print(data[i]+" ");
    	}
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    第九次任务
    第八次任务
    第七次任务
    第六次任务
    第四天半任务
    第四天任务
    第三天任务
    第二天任务
    第一天任务
    第⑩天任务
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/5288316.html
Copyright © 2020-2023  润新知