输入n个整数,输出其中最小的k个
2016-03-17 17:35
295 查看
描述 | 输入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]+" "); } }
相关文章推荐
- 集合
- json跨域请求
- word2vec 之 Deep Learning in NLP (一)词向量和语言模型
- 一些JS特效
- Angular打印错误的minErr函数
- C# 动态创建DataTable表,并添加新行
- 域用户更改环境变更与关闭UAC
- 有关JSON的工具类
- java学习笔记-线程
- 二维数组转化为json
- Qt在Windows下的三种编程环境搭建
- 在初学C语言容易忽略的函数-scanf()函数与printf()函数
- 【BZOJ 2120】 数颜色 (分块,暴力)
- 111
- 问题-栈S最多能容纳4个元素,现有6个元素按A、B、C、D、E、F顺序进栈,问可能的出栈顺序。
- c++ 之 编译期多态&运行期多态
- Android DrawerLayout的使用
- PHP的Yii框架中使用数据库的配置和SQL操作实例教程
- Spark
- it小小鸟读后感