剑指Offer题目笔记22(快速排序)

快速排序定义:

​ 快速排序的基本思想是分治法,排序过程如下:在输入数组中随机选取一个元素作为中间值(pivot),然后对数组进行分区(partition),使所有比中间值小的数据移到数组的左边,所有比中间值大的数据移到数组的右边。接下来对中间值左右两侧的子数组用相同的步骤排序,直到子数组中只有一个数字为止。

源代码:
class Solution {public int[] sortArray(int[] nums){quicksort(nums,0,nums.length - 1);return nums;}private void quicksort(int[] nums,int start,int end){if(end > start){int pivot = partition(nums,start,end);quicksort(nums,start,pivot-1);quicksort(nums,pivot+1,end);}}	private int partition(int[] nums,int start,int end){int small = start - 1;for(int i = start;i < end;i++){if(nums[i] < nums[end]){small++;swap(nums,i,small);}}small++;swap(nums,small,end);return small;}private void swap(int[] nums,int index1,int index2){if(index1 != index2){int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}}
}

面试题76:

面试题76

问题:

​ 找出数组中第k大的数字

解决方案:

​ 在长度为n的排序数组中,那么第k大的数字就是下标为n-k。使用partition对数组分区,如果分区后,partition选定的中间值的下标刚好等于n-k,那么该中间值就是第k大的数字。如果选定中间值的下标小于n-k,那么需要接着对该中间值右边的子数组继续进行分区,以此循环直到找到选定中间值的下标等于n-k为止。如果选定中间值的下标大于n-k,那么需要接着对该中间值左边的子数组继续进行分区,以此循环直到找到选定中间值的下标等于n-k为止。

源代码:
class Solution {public int findKthLargest(int[] nums, int k) {int target = nums.length - k;int start = 0;int end = nums.length - 1;int index = partition(nums,start,end);while(index != target){if(index < target){start = index + 1;}else{end = index - 1;}index = partition(nums,start,end);}return }private int partition(int[] nums,int start,int end){int small = start - 1;for(int i = start;i < end;i++){if(nums[i] < nums[end]){small++;swap(nums,i,small);}}small++;swap(nums,small,end);return small;}private void swap(int[] nums,int index1,int index2){if(index1 != index2){int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}}
}

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

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

相关文章

elasticsearch 8.12+kibana 8.12

准备工作&#xff1a;1.下载相关的安装包放到/usr/local/ES下面 elasticsearch下载地址:Download Elasticsearch | Elastic elasticsearch-head-master下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip node下载地址:Index of /dist/ kibana地址:Downl…

C++中的STL简介与string类

目录 STL简介 STL的版本 STL的六大组件 string类 标准库中的string类 string类的常用接口 string类对象对容量的操作 size()函数与length()函数 capacity()函数 capacity的扩容方式 reserve()函数 resize()函数 string类对象的操作 push_back()函数 append()函数 operator()函数…

【JavaScript算法】DOM树层级显示

题目描述&#xff1a; 上述表达式的输出结果为 [DIV] [P, SPAN, P, SPAN] [SPAN, SPAN]直接上代码 let tree document.querySelector(".a"); function traverseElRoot(elRoot) {const result [];function traverse(element, level) {if (!result[level]) {resul…

智能未来:一站式AI技术探索平台(一键收藏)

KKAI&#xff0c;&#xff08;kk.zlrxjh.top&#xff09; 一个融合了星火大模型和文心大模型技术的先进知识增强型大语言模型&#xff0c;致力于自然语言处理&#xff08;NLP&#xff09;技术的深入研究与开发。此模型展现了卓越的语义理解与内容生成技能&#xff0c;轻松应对…

[Python GUI PyQt] PyQt5快速入门

PyQt5快速入门 PyQt5的快速入门0. 写在前面1. 思维导图2. 第一个PyQt5的应用程序3. PyQt5的常用基本控件和布局3.1 PyQt5的常用基本控件3.1.1 按钮控件 QPushButton3.1.2 文本标签控件 QLabel3.1.3 单行输入框控件 QLineEdit3.1.4 A Quick Widgets Demo 3.2 PyQt5的常用基本控件…

静态住宅IP优缺点,究竟要怎么选?

在进行海外 IP 代理时&#xff0c;了解动态住宅 IP 和静态住宅 IP 的区别以及如何选择合适的类型非常重要。本文将介绍精态住宅 IP 特点和&#xff0c;并提供选择建议&#xff0c;帮助您根据需求做出明智的决策。 静态住宅 IP 的特点 静态住宅 IP 是指 IP 地址在一段时间内保…

2024最新嵌入式学习路线,太顶了

2024最新嵌入式学习路线&#xff0c;太顶了&#xff01;&#xff01;&#xff01; 嵌入式系统是一种将软件和硬件紧密结合的技术。在我们投身嵌入式行业时&#xff0c;首先需要认识到&#xff0c;无论我们是专注于软件开发还是硬件开发&#xff0c;最终的目标都是为了更好的工作…

JSON 文档存储详解

JSON&#xff08;JavaScript Object Notation、JavaScript 对象表示法&#xff09;是一种轻量级的数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。JSON 易于阅读和编写&#xff0c;同时也方便机器解析和生成&#xff0c;并且能够有效地提升网络传…

关于Oracle VM VirtualBox无法查询IP地址的原因

1.如下&#xff0c;输入ifconfig却没有显示我框住的显示IP。 2.原因有可能&#xff1a; &#xff08;1&#xff09;主机没连上网络。 &#xff08;2&#xff09;虚拟机网络设置不正确。

跳跃游戏-java

题目描述: 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 解题思想: …

scGRN:人与鼠的GRN平台

基因调控网络GRN是包含转录因子TFs与其下游靶基因之间的调控相互作用的可解释图模型。了解GRN的拓扑结构和动力学是解释疾病病因机制和将相应发现转化为新疗法的基础。单细胞多组学技术的最新进展促使从单细胞转录组学和表观基因组学数据中以前所未有的分辨率推断GRN。在这里&a…

HTX Ventures:为什么BounceBit可能成为新的BTC生态解决方案?

随着BTC现货ETF的通过&#xff0c;全球各大机构和个人都在不断加码对BTC的持仓&#xff0c;BTC价格也随之上升&#xff0c;目前已上升至全球市值排名前十的资产。在本轮市场周期中&#xff0c;BTC铭文和BTC扩容是两个被市场高度关注的细分赛道。BTC生态资产的多元化收益探索正在…