博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
输入n个整数,找出最小的k个数
阅读量:3960 次
发布时间:2019-05-24

本文共 1588 字,大约阅读时间需要 5 分钟。

题目描述:输入n个整数,找出其中最小的K个数例如输入4,5,6,1,2,3,7,8这8个数字则最小的4个数字是1,2,3,4

方法一:对数组进行排序 时间复杂度O(nlogn)

import java.util.ArrayList;import java.util.Arrays;public class GetLeastNumbers {
public static ArrayList
getLeastNumbers(int[] input,int k){
ArrayList
list=new ArrayList
(); if(input.length==0 ||input==null||k>input.length){
return list; } Arrays.sort(input); if(k==1){
System.out.println(input[0]); } for(int i=0;i

其中Arrays.sort()也可以换为各种排序方法:例如下面的冒泡排序法:

for(int i=0;i
input[j]) {
int temp = input[i]; input[i] = input[j]; input[j] = temp; } } }

方法二:将数组分成前k个数和后n-k个数,定义一个指针再后部分移动,找出前面部分数中最大数的下标,如果指针指向的数比前k个数的最大值小时,就将这个最大值替换为指针指向的数

public class GetLeastNumbers {
public static ArrayList
getLeastNumbers(int[] input,int k) {
ArrayList
list = new ArrayList
(); if (input.length == 0||input==null||k>input.length){
return list; } for(int i=0;i
list){
int index=0; int a=list.get(0); for(int i=1;i
a){
a=list.get(i); index=i; } } return index; } public static void main(String[] args) {
int[] a={
4,5,6,1,2,3,7,8}; int k=4; ArrayList
list=new GetLeastNumbers().getLeastNumbers(a,k); for(int i:list){ System.out.print(i+" "); } }}

转载地址:http://tylzi.baihongyu.com/

你可能感兴趣的文章
[Java] Appfuse 源代码分析
查看>>
[Java] Appfuse 最佳实践
查看>>
[心情] 如果有一天
查看>>
[随笔] 6月近况小记 & 一个站点优化问题
查看>>
[Perl] 关于 Bugzilla 的一些问题与研究
查看>>
[Linux] 常用 linux 系统命令及维护备忘
查看>>
[Linux] 关于 Ext4 HowTo
查看>>
[杂记] 新年物语&关于Mysql引擎性能测试
查看>>
[心得] 近期更新&关于Infobright
查看>>
[杂记] 流量统计 & 短信接口
查看>>
[Java] JRebel + Maven + Jetty 热部署
查看>>
[算法] 从 Memcached 分布式应用看一致性哈希散列函数的选择
查看>>
[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用
查看>>
[设计] 原型界面设计利器 Balsamiq Mockups 推荐
查看>>
[闲话] 在西方的程序员眼里,东方的程序员是什么样的
查看>>
[管理] 成功之路的探寻 —— “三力” 理论
查看>>
[连载] Socket 深度探索 4 PHP (一)
查看>>
[连载] Socket 深度探究 4 PHP (二)
查看>>
[连载] Socket 深度探究 4 PHP (三)
查看>>
[无线] Android 系统开发学习杂记
查看>>