第二次算法作业

news/2025/11/2 21:07:34/文章来源:https://www.cnblogs.com/hrm1215/p/19185431

基本思路
该算法采用分治策略来寻找数组中第k小的元素。首先从数组中随机选择一个基准元素,然后将数组划分为三个部分:小于基准的元素、等于基准的元素和大于基准的元素。根据k值所在的范围,决定在哪个子数组中继续递归查找,或者直接返回基准值。

伪代码表示
function findKthSmallest(arr, k):
if arr.length == 1:
return arr[0]

pivot = 随机选择arr中的一个元素
smaller = [x for x in arr if x < pivot]
equal = [x for x in arr if x == pivot]
larger = [x for x in arr if x > pivot]if k <= len(smaller):return findKthSmallest(smaller, k)
elif k <= len(smaller) + len(equal):return pivot
else:return findKthSmallest(larger, k - len(smaller) - len(equal))

时间复杂度分析
最好情况
在理想情况下,每次划分都能将问题规模减半。此时时间复杂度为O(n),其中n是数组的大小。这种情况发生在基准值每次都能将数组均匀划分时。
最坏情况
在最坏情况下,每次划分只能排除一个元素。此时时间复杂度为O(n²)。这种情况发生在基准值总是选择为当前数组中的最小或最大元素时。

学习体会与思考
通过学习分治法,我深刻体会到将复杂问题分解为简单子问题的重要性。分治法的核心在于分而治之,通过递归地将大问题分解为小问题,最终合并结果得到原问题的解。
这种算法设计思想不仅适用于计算机科学,在生活中也同样有用。面对复杂任务时,我们可以将其分解为多个小任务,逐个解决,最终完成整个大任务。分治法教会我们如何用系统化的方式处理复杂问题,这是本章学习中最有价值的收获。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOIP 2025 游记 退役记

【洛谷专栏】 前言 前作:NOIP 2024 游记。 上一篇文章:CSP-S 2025 游记(The Last CSP ver.)。 同样地支持友链互挂,请私信。 CSP 结束了,可能没有冬令营机会了。 联赛,翻盘,还是,很难。 正文 2025.11 11.1 提…

一个万古常青的、小而美的输入法

一个万古常青的、小而美的输入法万古常青apt install fcitx-sunpinyin 即可安装。Ubuntu和Debian不倒,就一直有。美系统词库为libgooglepinyin和sunpinyin的合并去重版,词比它们都多。 用sunpinyin训练了字的三元语法…

开始学深度学习!

开始学深度学习!

LLaMA-Factory

LLaMA-Factory Used by Amazon, NVIDIA, Aliyun, etc.Supporters ❤️Warp, the agentic terminal for developersAvailable for MacOS, Linux, & WindowsEasily fine-tune 100+ large language models with zero-…

守护线程--daemon

线程可以分为用户线程与守护线程,虚拟机必须等待用户线程执行完毕但不用等待守护线程执行完毕 守护线程如:垃圾回收机制, 内存监控等 守护线程顾名思义,用于守护用户线程,下面举例介绍 public class Daemon {publ…

换一个思维解决问题:希望在转角

前段时间困扰我的一个网络拦截请求的问题,终于被巧妙地解决了。 我之前开发了一个net proxy,专门用于对特殊网络环境的模拟,以此测试一个工作中需要测试的软件。简单来说就是用mitmproxy实现一个网络流量代理服务,…

条件表达式中的赋值问题

条件表达式中的赋值问题在条件表达式中(如while、if语句的条件部分),不允许直接进行变量初始化并同时使用该变量进行比较。C++语法规则禁止在条件判断中同时进行变量声明和比较操作。 int numJewelsInStones(string…

csp2025 总结

T1T2 没有什么失误,大概 40min 的时候过了。 T3 之前做过 https://uoj.ac/problem/772 (但其实纯粹是误导),当时就忘记了复杂度分析依赖贡献一起处理(虚树)后来改了,场上就把虚树这个环节忘了,大样例很水所以过…

CSP 总结

J 前两题写得比较快,20min 左右过了。 T3 一开始看错了,以为区间可以重叠,手动模拟了一下样例发现不对,重读了一遍题,大概在 40min 时过了大样例。 感觉手感火热,遂开 T4,发现直接统计和大于 \(l_i\) 的不太好做…

2025 CSP

考虑自己的考场策略是否正确T1T2只用了40分种,问题在于T3的时间分配过多,但是我认为这是比较正确的因为在T1T2是签到题的情况下,以及T4基本不可能想出正解的情况下,去想一个自己已经有50分暴力分思路的T3是一个比较…

Jenkins-CICD项目自动化部署

1.环境准备主机名 IP 配置dev 192.168.233.146 2G C1project_master 192.168.233.154 3G,2C1project_slave 192.168.233.155 3G,2C1auto_deployment 192.168.233.156 5G,2C12.初始化环境 四台都做 #1.修改主机名 hostn…

使用Stream API重构你的数据处理

如果你还在使用繁琐的for循环和临时集合来处理数据,是时候了解Java 8引入的Stream API了。它让数据处理变得声明式、可组合,并且更加优雅。 什么是Stream? Stream不是数据结构,而是对数据源(集合、数组等)的元素…

js实现页面弹框,每天没个浏览器只在第一次访问会有弹框

js实现页面弹框,每天没个浏览器只在第一次访问会有弹框localStorage.getItem方法<script type="text/javascript">function GetDateStr(AddDayCount) {var dd = new Date();dd.setDate(dd.getDate()+…

[省选联考]追忆——题目背景美化

\[\textrm{\textit{\textbf{\large \textcolor{#8b5cf6}{我常常}\textcolor{#6366f1}{追忆}\textcolor{#0ea5e9}{过去。}}}} \]\[\textstyle \mathcal {\small {^{\frac{\textrm{\textit{\textbf{\textcolor{#f472b6}{…

多线程封装

//Thread.hpp #pragma once #include<iostream> #include<string> #include<cstring> #include<functional> #include<unistd.h> #include<cassert> #include<pthread.h> c…

使用 GeckoCircuits 设计 Buck 电源环路

使用 GeckoCircuits 设计 Buck 电源环路使用 GeckoCircuits 设计 Buck 电源环路 笔者最近发现一款开源的电力电子仿真软件 GeckoCircuits,它是由苏黎世联邦理工学院(ETH)开发的,具有极高的仿真速度,软件小巧,功能…

第k小的数的分治算法

include using namespace std; int x=100; int rr(int b[],int left,int right) { int m=left,n=right+1; int h=b[left]; while(1) { while(b[++m]<h&&m<right); while(b[--n]>h); if(m>=n) { br…

Day29-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\reflect

单元测试 Junit单元测试框架package Basic.src.com.Junit;public class StringUtil {public static void printNumber(String name) {if (name == null) {System.out.println(0);return;//停掉方法}System.out.println…

k8s-Pod中的网络通信(3)

部署的pod都会涉及到和内外网络通信,我们部署的pod 有一个ip,这个IP 是集群内部的IP ,只能在集群内被访问,k8s中pod的网路通信是交给service来管理的,简称svc。负责将外部流量引入,和内部流量引出。 1.外部流量访…

一个灵感:思维的断章

一个灵感:思维的断章 它来时,没有预兆。 不是在逻辑的链条上规行矩步,也不是在记忆的仓库里按图索骥。它诞生于一片更为辽阔、更为混沌的模糊空间。 那片空间,是意识的背景辐射,是思想形成之前的星云。那里,概念…