第k个数(排序)
给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。
输入格式
第一行包含两个整数 n 和 k。
第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。
输出格式
输出一个整数,表示数列的第k小数。
数据范围
1≤n≤1000001≤n≤100000,
1≤k≤n1≤k≤n
输入样例:
5 3
2 4 1 5 3
输出样例:
3
快速排序,时间O(n*logn)       import java.util.Scanner;
       public class Main {
           public static void quick_sort(int a[],int l,int r){
                 if(l>=r) return;
                 int i=l-1,j=r+1,x=a[l+r>>1];
                 while(i<j){
                       while(a[++i]<x);
                       while(a[--j]>x);
                       if(i<j){
                           int t=a[i];
                           a[i]=a[j];
                           a[j]=t;
                       }
                 }
                 quick_sort(a,l,j);
                 quick_sort(a,j+1,r);
           }
           public static void main(String[] args) {
                Scanner scan=new Scanner(System.in);
                int n=scan.nextInt();
                int k=scan.nextInt();
                int a[]=new int[n];
                for(int i=0;i<n;i++) a[i]=scan.nextInt();
                quick_sort(a,0,n-1);
                System.out.println(a[k-1]);
        }
}
第k个数(排序)的更多相关文章
- 算法系列:寻找最大的 K 个数
		Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ... 
- 第2章 数字之魅——寻找最大的K个数
		寻找最大的K个数 问题描述 在面试中,有下面的问答: 问:有很多个无序的数,我们姑且假定它们各不相等,怎么选出其中最大的若干个数呢? 答:可以这样写:int array[100] …… 问:好,如果有 ... 
- 排序矩阵中的从小到大第k个数 · Kth Smallest Number In Sorted Matrix
		[抄题]: 在一个排序矩阵中找从小到大的第 k 个整数. 排序矩阵的定义为:每一行递增,每一列也递增. [思维问题]: 不知道应该怎么加,因为不是一维单调的. [一句话思路]: 周围两个数给x或y挪一 ... 
- 剑指offer-最小的K个数-时间效率-排序-python
		题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这就是排序题(将结果的最小K值输出) # -*- coding ... 
- 剑指Offer面试题:27.最小的k个数
		一.题目:最小的k个数 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 这道题是典型的TopK问题,其最简单的思路莫过于 ... 
- 剑指Offer:面试题30——最小的k个数(java实现)
		问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法) public void Quic ... 
- 【编程之美】2.5 寻找最大的k个数
		有若干个互不相等的无序的数,怎么选出其中最大的k个数. 我自己的方案:因为学过找第k大数的O(N)算法,所以第一反应就是找第K大的数.然后把所有大于等于第k大的数取出来. 写这个知道算法的代码都花了2 ... 
- 剑指offer面试题30:最小的k个数
		一.题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 二.解题思路 1.思路1 首先对数组进行排序,然后取出前k个数 ... 
- 窥探算法之美妙——寻找数组中最小的K个数&python中巧用最大堆
		原文发表在我的博客主页,转载请注明出处 前言 不论是小算法或者大系统,堆一直是某种场景下程序员比较亲睐的数据结构,而在python中,由于数据结构的极其灵活性,list,tuple, dict在很多情 ... 
- 找到n中最小的k个数
		题目:n个数中,求最小的前k个数. 这道题在各个地方都看到过,在国内出现的频率也非常高. 面完阿里回来听说这道题又被考了,所以还是决定回来写一写,对于这种高频题...顺便再吐槽一下阿里的面试,我竟然一 ... 
随机推荐
- Pikachu-RCE(远程命令/代码执行漏洞)
			RCE(remote command/code execute)概述 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行一般出现这种漏洞,是因为 ... 
- Android中的消息处理机制
			安卓中的消息处理机制主要涉及到5个概念 (1)消息类:Message,可以理解成一个数据单元: (2)消息队列类:Message Queue,存放通过Hander发布的消息,处理顺序类似于队列,按照先 ... 
- linux基础之磁盘管理与文件系统
			上面一篇文章(https://www.cnblogs.com/ckh2014/p/7224851.html)介绍了硬盘的基本结构,那么一块磁盘如何应用取存储数据呢? 它的步骤是这样的: 识别硬盘 -- ... 
- git提交时忽略了dll
			问题说明 突然出现torisegit会自动忽略*.dll文件不会提交,比如:CSharp.dll.  问题原因 原因是由于安装了Sourcetree,受到了其环境变量的影响.  Windows系统 ... 
- PTA 1003 Emergency
			问题描述 As an emergency rescue team leader of a city, you are given a special map of your country. The ... 
- 修改url中参数值
			1.一种方法function changeUrlArg(url, arg, val){ var pattern = arg+'=([^&]*)'; var replaceText = arg+ ... 
- 《深入理解java虚拟机》读书笔记七——第八章
			第八章 虚拟机字节码执行引擎 1.运行时栈帧结构 概述: 栈帧是用于支持虚拟机进行方法调用的和方法执行的数据结构,他是虚拟机运行时数据区中的虚拟机栈的栈元素,栈帧存储了方法的局部变量,操作数栈,动态连 ... 
- 51Nod 1091 线段的重叠 (贪心)
			X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ... 
- 机器学习笔记(十一)OCR技术的应用
			1.介绍OCR: OCR(Photo optical character recognition 照片光学字符识别) 应用于读取电子照片中的文字. 2.算法思路: ① 识别文字区域: ② 字符切分: ... 
- bootstrap-datatimepicker插件的使用
			1.引入相关的css.js文件(因为是bootstrap的,首先应该引入bootstrap.css和bootstrap.js): <link rel="stylesheet" ... 
