import java.util.Arrays;

/**
* 选择问题,确定N个数中第K个最大值
* @author wulei
* 将前k个数读进一个数组,冒泡排序(递减),再将剩下的元素逐个读入,
* 如果新元素小于第K个元素,忽略,否则将新元素插入正确的位置,并移除原第K个元素。
*/
public class SelectTest {

//public static final Random RANDOM = new Random(3);
//3为随机数种子,当种子相同的时候,每次随机生成的数都一样。
//RANDOM.nextInt(100) 生成0到100的整数。

//冒泡
public static void sort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j] < arr[j+1]){
int x = arr[j];//TODO 测试new基本类型的性能,待会儿放到全局
arr[j] = arr[j+1];
arr[j+1] = x;
}
}
}
}

public static int selectK(int[] arr,int k){
int[] kArr = Arrays.copyOf(arr, k);
sort(kArr);
for (int i = k; i < arr.length; i++) {
if(arr[i] > kArr[k-1]){
kArr[k-1] = kArr[k-2];
for (int j = k-2; j >= 0; j--) {
if(kArr[j] > arr[i]){
kArr[j+1] = arr[i];//复杂问题简单化:如果新元素比a[j]小,那么在a[j]后面,大,那么占用a[j]
break; //的位置,但需要先将a[j]往后移。
}else{
kArr[j+1] = kArr[j];
kArr[j] = arr[i];
}
}
}
}
return kArr[k-1];
}

public static void main(String[] args){
int[] arr = new int[]{3,2,1,9,0,0,0,0,0,10,11,8};
long start = System.currentTimeMillis();
int ka = selectK(arr, 3);
System.out.println("time:"+(System.currentTimeMillis()-start));
System.out.println(Arrays.toString(arr));
System.out.println(ka);
}

}

编写一个程序解决选择问题。令k=N/2。的更多相关文章

  1. 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值

    编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值 1 #import <Foundation/Foundation.h>  2   3 int main( ...

  2. 已知一个正整数m,编写一个程序求m的反序数(待消化)

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/5 21:08 * @description ...

  3. 编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归

    import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti ...

  4. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  5. java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  6. Java基础面试题: 份证号码组成规则是前4位是代表省份和地区 编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。

    package com.swift; public class ID_Where_Male_Test { public static void main(String[] args) { /* * 中 ...

  7. java编程基础篇---------> 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。

    编写一个程序,从键盘输入三个整数,求三个整数中的最小值. 关键:声明变量temp   与各数值比较. package Exam01; import java.util.Scanner; public ...

  8. python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

  9. python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

    python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数.如果其中没有奇数,就输出一个消息进行说明. 笔者是只使用条件语句实行的.(if-else) 重难点:先把三个数进行由小到大的 ...

随机推荐

  1. nginx伪静态之try_files和rewrite讲解

    服务器脚本以php为例     一.伪静态是个啥?   1.说起伪静态基本上搞web开发的人,多多少少都有了解与使用,有人会说什么时候会使用伪静态?使用原生的url地址不是蛮好的吗,确实是这样的,其实 ...

  2. 小心踩雷,一次Java内存泄漏排查实战

    1.使用 jstack pid > jstack.log 保存了线程栈的现场,使用 jmap -dump:format=b,file=heap.log pid 保存了堆现场: https://m ...

  3. SQL row_number() over(partition by函数

    1)row_number() over(partition by 列名1 order by 列名2 desc)的使用 表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每 ...

  4. Shell基本介绍和使用

    Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  5. 自己写的运用bootstrap和angulajs框架写的demo

    登录html: <body ng-app="mainapp"> <div class="container"> <div clas ...

  6. html5页面与android页面之间通过url传递参数

    html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url  ?后面,js获取url  ?号后面的参数. 方法一: <scrīpt> /* 用途 ...

  7. PostgreSQL 自动输入密码

    在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库时,每次都要输入密码.如果要写 Shell Script,做一些类似于备份的自动化管理工作,每次都 ...

  8. c#中base64编码解码

    //编码: byte[] bytes = Encoding.Default.GetBytes("要转换的字符"); string str = Convert.ToBase64Str ...

  9. 帝国cms调用栏目自定义字段(栏目简介)如何操作

    开源的cms就像一个操作系统,可以满足大部分人的需求,如果你想增加一些特殊的功能,那就二次开发呗,就像APP一样.帝国cms默认的栏目是没有调用栏目自定义字段的,我们可以增加一些概述类的文字,让读者对 ...

  10. 报错解决——Failed to load resource: the server responded with a status of 404 (Not Found) favicon.ico文件找不到

    Django项目开发完成后在本地运行没问题,但在推到服务器上后出现报错Failed to load resource: the server responded with a status of 40 ...