输入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 |
输入 |
输入说明 |
输出 |
输出一个整数数组 |
样例输入 | 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]+" ");
}
}
输入n个整数,输出其中最小的k个的更多相关文章
- 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。
看完两个求最大值算法之后的一些感想. 如果想直接看算法的可以跳过.但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的. 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功 ...
- [华为]输入n个整数,输出其中最小的k个
链接:https://www.nowcoder.com/questionTerminal/69ef2267aafd4d52b250a272fd27052c来源:牛客网 输入n个整数,输出其中最小的k个 ...
- 华为OJ平台试题 —— 数组:输入n个整数,输出当中最小的k个
输入n个整数.输出当中最小的k个: 代码: /* * 输入n个整数,输出当中最小的k个. * 输入说明:1.输入两个整数:2.输入一个整数数组 * 输出说明:输出一个整数数组 */ <p ...
- C语言:输入10个整数,找出其中绝对值最小的数
1 输入10个整数,找出其中绝对值最小的数(10分) 题目描述 输入10个整数,找出其中绝对值最小的数 输入 十个整数 输出 绝对值最小的数 样例输入 -10 -2 30 40 50 60 70 80 ...
- 华为OJ平台——输出最小的k个数
输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...
- 算法练习:寻找最小的k个数
参考July的文章:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数题目描述:查找最小的k个元素题目:输入n个整数,输出其中 ...
- 【编程题目】查找最小的 k 个元素
5.查找最小的 k 个元素(数组)题目:输入 n 个整数,输出其中最小的 k 个.例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,则最小的 4 个数字为 1,2,3 和 4. 算法里面学 ...
- 查找最小的k 个元素之C#算法实现
紧接着上一篇微软编程面试100题,这次想解决的是查找最小的K个元素,题目是:输入n 个整数,输出其中最小的k 个.例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 ...
- IT公司100题-5-查找最小的k个元素
问题描述: 输入n 个整数,输出其中最小的k 个. 例如输入8, 7, 6, 5, 4, 3, 2, 1这8 个数字,则最小的3 个数字为3, 2, 1. 分析: 时间复杂度O(nlogn)方法: ...
随机推荐
- Dialog+NumberPicker
package com.gtercn.myapplication; import android.app.Activity; import android.content.DialogInterf ...
- css用clearfix清除浮动
本文从http://www.studyofnet.com/news/196.html复制. 本文导读:写css 时总为浮动而烦恼,如果用了浮动,浮动的父层不会跟着浮动框的高度增加而增加,在Fire ...
- iOS10 UI教程视图的绘制与视图控制器和视图
iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...
- Smart原则
遵循smart原则,必须是具体的.可衡量的.可达到的.与岗位职责相关的.有明确达成期限的.
- css之overflow:细探之下有意想不到的结果
overflow 是一个非常常用的 CSS 属性,一般来说会认为很简单,其实细究之后就会发现他还有很多小特性或者说意想不到的结果: 下面就介绍下(在浏览器环境下)关于 overflow 的小总结. 哪 ...
- 使用Gson排除特定字段
http://blog.csdn.net/hknock/article/details/51037564
- 贪心 Codeforces Round #287 (Div. 2) A. Amr and Music
题目传送门 /* 贪心水题 */ #include <cstdio> #include <algorithm> #include <iostream> #inclu ...
- NSDictionary、NSMutableDictionary及其枚举器的用法
.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberWithInt:]; 以一个元素初始化 NSDictionary *dic = ...
- Robotium原理初探
本文转载于:http://blog.csdn.net/jack_chen3/article/details/41927395 测试框架图: Android测试环境的核心是Instrumentation ...
- json日期格式问题的办法
//json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...