选择问题是求一个n个数列表的第k个最小元素的问题。

那么如何寻找n个元素中第k个最小元素呢?

package com.liuzhen.chapter4;

public class SelectProblem {
//快速选择
/*
* 参数A:给定随机数数组
* 参数k:要求输出的第k个最小元素
* 函数功能:返回数组A的第k个最小元素的值
*/
public int quickSelect(int[] A,int k){
int start = 0;
int end = A.length-1;
int mid = new MedianProblem().LomutoPartition(A, start,end);
while(true){
if(mid > k-1){
end = mid-1;
mid = new MedianProblem().LomutoPartition(A, start,end);
}
else if(mid < k-1){
start = mid+1;
mid = new MedianProblem().LomutoPartition(A, start,end);
}
else
break;
}
return A[mid];
} public static void main(String[] args){
SelectProblem test = new SelectProblem();
int[] A = {4,1,10,8,7,12,9,2,15};
int result = test.quickSelect(A, 5);
System.out.println("对数组进行快速选择并执行划分后结果:");
for(int i = 0;i < A.length;i++)
System.out.print(A[i]+" ");
System.out.println("\n"+"进行快速选择后得到数组第5最小元素(从小到大排序):"+result);
}
}

运行结果:

对数组进行快速选择并执行划分后结果:
2 1 4 7 8 12 9 10 15
进行快速选择后得到数组第5最小元素(从小到大排序):8

Java实现选择问题的更多相关文章

  1. 如何在Java生态圈选择一个轻量级的RESTful框架?

    在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元.微服务 ...

  2. Java笔记——选择语

    Java笔记--选择语句     1. if语句 规律: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   第一种: if(表达式) 语句;//多个语句可用{} 例如 ...

  3. Java基础——选择语句

    Java基础--选择语句     1. if语句 规律: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   第一种: if(表达式) 语句;//多个语句可用{} 例如 ...

  4. 《Java基础——选择语句》

    Java基础--选择语句       1. if语句; 规则: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   格式一: if(表达式) 语句;//多个语句可用{} ...

  5. Java实现选择排序

    选择排序思想就是选出最小或最大的数与第一个数交换,然后在剩下的数列中重复完成该动作. package Sort; import java.util.Arrays; public class Selec ...

  6. java JFileChooser选择文件和保存文件

    //文件过滤器import java.io.File; import javax.swing.filechooser.FileFilter; public class MyFilter extends ...

  7. Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例

    文件加密器,操作过程肯定涉及到文件选择器的使用,所以这里以文件加密器为例.下例为我自己写的一个文件加密器,没什么特别的加密算法,只为演示文件选择器JFileChooser的使用. 加密器界面如图: 项 ...

  8. Java——文件选择框:JFileChooser

    import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import j ...

  9. JAVA排序--[选择排序]

    package com.array; public class Sort_Select { /** * 项目名称:选择排序 ; * 项目要求:用JAVA对数组进行排序,并运用选择排序算法; * 作者: ...

  10. java前端选择

    在做web开发的时候难免遇到一个问题,那就是,选择什么样的框架.下面把前端的框架简单的列一下. 1.flex Apache基金会今天发布了Flex 4.8版本,这是Adobe将Flex捐献给Apach ...

随机推荐

  1. Python --函数学习3 (将函数存储在模块中)

    将函数存储在模块 函数可以将代码块和主程序分离,通过给函数指定描述性名称,可以让主程序更加容易理解,还可以更进一步,将函数存储在模块的独立文件中,再将模块导入到主程序.import 语句允许再当前运行 ...

  2. windows下node配置npm全局路径(踩坑)

    事情的起因是:Koa要求v7.6.0以上的nodejs. 但是window环境下升级node不容易,试过npm install -g n 和n stable等命令无效,而网上推荐的nvm并不支持win ...

  3. react 学习前期用到的插件

    prop-types------展示组件的props类型检测: import PropTypes from 'prop-types' ... Link.propTypes = { active: Pr ...

  4. Unity2D模拟控制位移

    using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public ...

  5. OGG FOR BigData(Hive) GoldenGate 性能测试

    版本信息: Oracle GoldenGate Command Interpreter Version 12.2.0.1.160419 OGGCORE_12.2.0.1.0OGGBP_PLATFORM ...

  6. Django之from.Form内置字段

    from django import forms Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内 ...

  7. kubernetes flannel pod CrashLoopBackoff解决

    背景 某环境客户部署了一个kubernetes集群,发现flannel的pod一直重启,始终处于CrashLoopBackOff状态. 排查 对于始终CrashLoopBackOff的pod,一般是应 ...

  8. 请求地址中出现中文或者URL作为参数,为避免含有特殊字符截断URL,需要编码

    URL中担心出现特殊符号!*'();:@&=+$,/?%#[] 从而截断完整的URL,需要对URL编码,服务端对URL再解码 参考: https://blog.csdn.net/aaaaazq ...

  9. mac OS和win7笔记本实现文件共享

    记录下macbook通过共享读取win7笔记本中文件的过程,条件是两台电脑处于同一无线网中 win7操作 点击网络图标--属性--更改高级共享设置 选择公用后选择以下选项:启动网络发现--启动文件和打 ...

  10. mysql创建本地用户及赋予数据库权限的方法示例

    大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也是类似 ...