无序数组求第k大的数 python_整数无序数组求第K大数

import java.util.Scanner;

/**

* 类似与求第k小的问题

* 求第k大相当于求第n-k+1小,n为数组长度

*

* 著名的BFPRT算法可保证在线性时间内得到结果。

* https://blog.csdn.net/qq_32767041/article/details/86099117

*

* 这里使用快速选择算法,这是一种基于快速排序的算法,

* 在实现上比BFPRT更简单。

* https://blog.csdn.net/qq_32767041/article/details/86300744

*

* @author wylu

*/

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

while (scanner.hasNext()) {

String[] strs = scanner.nextLine().split(" ");

int[] arr = new int[strs.length];

for (int i = 0; i < arr.length; i++) {

arr[i] = Integer.valueOf(strs[i]);

}

int k = scanner.nextInt();

System.out.println(arr[quickSelect(arr, arr.length - k + 1)]);

}

}

/**

* 查找第k小元素

* @param arr 无序数组

* @param k 目标第k小

* @return 成功:返回第k小元素的索引

*         失败:返回-1

*/

public static int quickSelect(int[] arr, int k) {

int left = 0, right = arr.length - 1, idx;

while (left <= right) {

idx = partition(arr, left, right);

if ((k - 1) == idx) return idx;

else if ((k - 1) > idx) left = idx + 1;

else right = idx - 1;

}

return -1;

}

/**

* 对给定的数组区间进行划分

* @param arr 数组

* @param left 区间下限,包含arr[left]

* @param right 区间上限,包含arr[right]

* @return 返回划分后,划分基准的索引

*/

private static int partition(int[] arr, int left, int right) {

int j = left - 1;

for (int i = left; i < right; i++) {

if (arr[i] <= arr[right]) swap(arr, i, ++j);

}

swap(arr, ++j, right);

return j;

}

private static void swap(int[] arr, int i, int j) {

int tmp = arr[i];

arr[i] = arr[j];

arr[j] = tmp;

}

}

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查) 本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。 阅读详情

相关推荐

RAGFlow API 实战指南:从据集管理到智能对话

本文提供了RAGFlow API的实战指南,详细介绍了如何从零开始构建基于检索增强生成(RAG)的智能应用。内容涵盖环境准备、API密钥获取、核心概念理解,以及通过API进行据集创建与管理、文档上传解析、知识块管理、检索测试,最终创建并配置智能聊天助手,实现基于私有知识库的精准对话。

weixin_29284885的博客 355

无序数组第k python_【python刷题】寻找数组中第K/小的

使用堆import heapqdef findKthLargest(nums, k):stack = []for num in nums:heapq.heappush(stack, num)if len(stack) > k:stack.pop()return stack[-1]nums = [6,4,1,3,5,2,7]print(findKthLargest(nums, 5))借鉴快速排...

weixin_34233720的博客 668

TMS320F28377D双核开发例程 - DSP开发

首先,我们需要创建一个新的工程来进行开发。然后,选择适当的目标设备为TMS320F28377D,并设置工程的名称和存储位置。在上面的代码中,我们定义了一个128个元素的输入数组和输出数组。然后,我们使用一个简单的字信号处理算法,将输入数组中的每个元素平方,并将结果存储到输出数组中。这个芯片的双核架构提供了更高的计算能力和灵活性,使得字信号处理的开发更加高效和可靠。希望本文对您有所帮助!当应用程序在TMS320F28377D芯片上运行时,它将对输入数组中的每个元素进行平方运算,并将结果打印出来。

IfllUnity的博客 2485

如何寻找无序数组中的第K元素?

如何寻找无序数组中的第K元素? 有这样一个算法题:有一个无序数组,要找出数组中的第K元素。比如给定的无序数组如下所示: 如果k=6,也就是要寻找第6的元素,很显然,数组中第一元素是24,第二元素是20,第三元素是17...... 第六元素是9。 方法一:排序法 这是最容易想到的方法,先把无序数组到小进行排序,排序后的第k个元素自然就是数组中的第k元素。但是这种方法的时间复...

weixin_30493401的博客 988

常见题:无序数组中第kpython

思路一:暴力解法 先对数组排序,然后找出第k个位置 sorted(nums)[-k] 算法的时间复杂度为 O(N log N),空间复杂度为 O(1) 思路二:利用快排思想 (https://blog.csdn.net/wenqiwenqi123/article/details/81669899) 快速排序每次把一个元素交换到正确的位置,同时把左边的都放上的,右边都放上小的。这个算法每一次选取...

扣扣biubiubiu~ 3792

python 无序列表中第k元素_PythonO(n)复杂度无序列表中第K的元素实例...

昨天面试上来就是一个算法,平时基本的算法还行,结果变个法就不会了。。。感觉应该刷一波Leecode冷静下。。。今天抽空看下。题目就是要O(n)复杂度无序列表中第K的元素如果没有复杂度的限制很简单。。。加了O(n)复杂度确实有点蒙虽然当时面试官说思路对了,但是还是没搞出来,最后面试官提示用快排的思想主要还是设立一个flag,列表中小于flag的组成左列表,于等于flag的组成右列表,主要是不...

weixin_34966374的博客 243

无序数组中找第K

类快排算法 leetcode215 由于只要找出第k,没必要将数组中所有值都排序。 典型解法:快速排序分组。 在数组中找到第k的元素 取基准元素,将元素分为两个集合,一个集合元素比基准小,另一个比基准 ,三种情况。 1.比基准的元素目标志位m正好为k-1,基准就是目的元素。 2.比基准的元素标志位m小于k, 那么就在比基准小的集合里面找第(k-m)的元素 3.若是比基准的元素为m于k,那就继续在该集合里面找第k的元素。 快排中的partition算法,返回key在数组中的

juluwangriyue的博客 2958

校招真题练习003 整数无序数组第K大数(滴滴)

整数无序数组第K大数 给定无序整数序列,其中第K,例如{45,67,33,21},第2大数为45 输入描述:输入第一行为整数序列,字用空格分隔,如:45 67 33 21输入第二行一个整数K,K在数组长度范围内,如:2输出描述:输出第K,本例为第2大数:45 1 import heapq 2 num = map(int,input().split()) 3 k = ...

weixin_34383618的博客 363

输出前K

关于问题描述给定一个数组,统计前k并且把这k个到小输出。输入第一行包含一个整数n,表示数组小。n < 100000。 第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。 第三行包含一个整数k。k < n。输出从到小输出前k,每个一行。样例输入10 4 5 6 9 8 7 1 2 3 0 5样例输出9 8 7

qiaoyifan的博客 5442

Python & C++:输入任意个整数最小和最大数

Python 代码: 测试环境:Win10(64位)Python3.8.5 #加入了循环测试和输入据错误提示 while 1: try: num_list = list(map(int, input("请输入要比较的整数字之间用空格或Tab隔开): ").split())) print("输入了",len(num_list),"个\n") # 方法1:列表的max和min函 print("最大数为:", max(num_list)) print("最小为:", min(nu

吐舌头的鱼的博客 3318

第kpython代码_Python实现查找数组中任意第k字算法示例

本文实例讲述了Python实现查找数组中任意第k字算法。分享给家供家参考,具体如下:模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。def partitionOfK(numbers, start, end, k):if k < 0 or numbers == [] or ...

weixin_39608478的博客 221

滴滴_无序整数数组第K && K小

K小 package didi; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; import java.util.Scanner; public class KthSmallElement { static i

Black eyes的博客 328

python:区间k大数查询

python:区间k大数查询 题目 问题描述 给定一个序列,每次询问序列中第l个到第r个中第K是哪个。 ​ 输入格式 第一行包含一个n,表示序列长度。 ​ 第二行包含n个正整数,表示给定的序列。 ​ 第三个包含一个正整数m,表示询问个。 ​ 接下来m行,每行三个l,r,K,表示询问序列从左往右第l个到第r个中,从往小第K是哪个。序列元素从1开始标号。 ​ 输出格式 总共...

Claire的博客 374

Python-从有序数组中寻找第K值以及类似题--字节算法题

题目一:LT215-无序数组的第K个元素 题目:在未排序的数组中找到第 k 个最的元素。请注意,你需要找的是数组排序后的第 k 个最的元素,而不是第 k 个不同的元素 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 首先需要做的是找一个方法做排序,让arr有序。 可以用快速排序来做,排完了之后的第L-k+1个 首先回忆快速排序的方法 快速排序的算法首先是partition 函 找中间区间的位置。 def

Jiana_Feng的博客 1203

NC88 寻找第Kpython) 快速排序

描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K。 给定一个整数数组a,同时给定它的小n和要找的K(1<=K<=n),请返回第K(包括重复的元素,不用去重),保证答案存在。 示例1 输入: [1,3,5,2,2],5,3 返回值:2 快速排序模板 class Solution: def quick_sort(self, a, start, end): if start >= end: # 递归的退出条件 retu

qq_38178543的博客 1073

区间k大数查询

        这道题是蓝桥网上的一道算法题,略微有些简单,但是可以练练手。         刚看到这道题的时候,知道是要用排序来做,但是想偷个懒,就想用个循环,每次记录下最的,然后循环k次最后一次就是题目所要的答案,然而真正写的时候发现比字节排序还麻烦,想了想,还是按部就班的来写吧。 问题描述 给定一个序列,每次询问序列中第l个到第r个中第K是哪个。 输入格式 第一行包含...

qq_36647492的博客 716

寻找第K大数

题目描述: 有一个整数数组,请你根据快速排序的思路,找出数组中第K。 给定一个整数数组a,同时给定它的小n和要找的K(K在1到n之间),请返回第K,保证答案存在。 示例一: 输入 [1,3,5,2,2],5,3 输出 2 题目思想,先通过快速排序,把程序排好,然后找第K个。 public static int findKth(int[] a, int n, int K) { // write code here int[] b = new int[n];

jiangzuofengqiao的博客 141

[蓝桥杯][算法训练] 区间k大数查询

蓝桥杯 ALGO-1 算法训练 区间k大数查询 问题描述 给定一个序列,每次询问序列中第l个到第r个中第K是哪个。 输入格式 第一行包含一个n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个。 接下来m行,每行三个l,r,K,表示询问序列从左往右第l个到第r个中,从往小第K是哪个。序列元素从1开始标号。 输出格式 总共输出m行...

cp0328的博客 3299

网易实习生笔试试题 第K

有一个整数数组,请你根据快速排序的思路,找出数组中第K。 给定一个整数数组a,同时给定它的小n和要找的K(K在1到n之间),请返回第K,保证答案存在。 代码如下:#include<stdio.h> #include<stdlib.h> #define swap(t,x,y) (t = (x),x = (y),y = (t))int partition(int *a,int lo,i

helloworlddm的博客 944

python个位十位百位_Js 分别取一个的百位,十位,个位

var num=654;var baiwei=parseInt(num/100);//6.54取整 得到百位6console.log(baiwei);var shiwei=parseInt((num%100)/10);//num%10 得到的是54,然后/10取整 得到的是十位5console.log(shiwei);var gewei=parseInt(num%10);//num%10 得到...

weixin_39640085的博客 4653

算法训练 K好

题目 问题描述 如果一个自然N的K进制表示中任意的相邻的两位都不是相邻的字,那么我们就说这个是K好L位K进制中K好目。例如K = 4,L = 2的时候,所有K好为11、13、20、22、30、31、33 共7个。由于这个目很,请你输出它对1000000007取模后的值。 输入格式 输入包含两个正整数,K和L。 输出格式 输出一个整数,表示答案对100...

baidu_41907100的博客 277
上一篇: python ffmpeg rtsp_FFmpeg RTSP流转M3U8 HLS
下一篇: 基于python的网站_基于Python的网站爬虫应用研究
weixin_39960503
博客等级 码龄9年 59粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值