算法篇-排序

快排

算法思想:每次找一个基数,然后对数组左右遍历,将小于基数的数据放到左边,大于基数的数放到右边,然后将基数左边,右边进行迭代再排序。
在这里插入图片描述

public static void quickSort(int[] nums, int left, int right) {if (left >= right) {return;}// 基准数字int base = nums[left];// 左右游标int low = left;int high = right;while (low < high) {while (low < high && nums[high] > base) {high--;}nums[low] = nums[high];while (low < high && nums[low] <= base) {low++;}nums[high] = nums[low];}nums[low] = base;quickSort(nums, left, low - 1);quickSort(nums, low + 1, right);}

归并排序

归并切实也就听着比较难,其实算法思想还是比较简单的。
算法思想:归并其实就是分治,最终将两个单数进行排序,然后再对有序的数组进行合并即可。两个有序的数组合并,需要开辟额外的空间,双指针遍历两个有序的数组,每次将其中最大的数,放入结果中。
在这里插入图片描述
代码:

public static void main(String[] args) {int[] nums = new int[]{8, 4, 5, 7, 1, 3, 6, 2};sort(nums, 0, nums.length - 1);System.out.println(Arrays.toString(nums));}public static void sort(int[] nums, int left, int right) {if (left >= right) {return;}// 分治int mid = (right + left) / 2;sort(nums, left, mid);sort(nums, mid + 1, right);// 合并merge(nums, left, mid, right);}public static void merge(int[] nums, int left, int mid, int right) {// 需要临时开辟空间int[] tmps = Arrays.copyOfRange(nums, left, right + 1);int i = left;int j = mid + 1;for (int k = left; k <= right; k++) {if (i > mid) {nums[k] = tmps[j - left];j++;} else if (j > right) {nums[k] = tmps[i - left];i++;} else if (tmps[i - left] < tmps[j - left]) {nums[k] = tmps[i - left];i++;} else {nums[k] = tmps[j - left];j++;}}}

双指针排序思想

笔试题中有很多有序的数组,然后根据有序的特性去做一些事情,比如下面这个题:
一个非递减数组[-4,-3,-2,-1,0,1,2,3,4,5],对每个元素进行平方,然后重新排序得到新的非递减数组。我们可以观察平方后的数组是什么?
解题思路:

  1. 平方运算后的数组[16,9,4,1,0,1,4,9,16,25]
  2. 我们观察这个数组有什么特点,两边大中间小
  3. 采用爽指针从左右遍历, 每次取最大的元素

代码:

public static void main(String[] args) {int[] nums = new int[]{-4,-3,-2,-1,0,1,2,3,4,5};System.out.println(Arrays.toString(nums));int l = 0;int r = nums.length - 1;int[] result = new int[nums.length];int i = r;while (i >= 0) {int left = nums[l] * nums[l];int right = nums[r] * nums[r];if (left < right) {result[i] = right;r--;} else {result[i] = left;l++;}i--;}System.out.println(Arrays.toString(result));}

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

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

相关文章

shell的函数

1、定义 将命令序列按照格式写在一起。 格式指的是函数的固定格式&#xff0c;有两种格式 2、作用 &#xff08;1&#xff09;方便重复使用 形成一个函数库&#xff0c;集中在一起&#xff0c;随时可以传参调用。 &#xff08;2&#xff09;大的工程分割成若干个小的功能…

SCIE与SCI期刊的区别

在学术出版领域&#xff0c;SCI&#xff08;Science Citation Index&#xff09;和SCIE&#xff08;Science Citation Index Expanded&#xff09;是两个关键的索引数据库&#xff0c;它们对科研人员在选择发表论文的期刊时起着至关重要的作用。虽然这两个术语经常被交替使用&a…

linux创建账号

在Linux中创建用户账号通常使用useradd命令。以下是一个基本的示例&#xff1a; sudo useradd -m 用户名这里-m选项意味着创建用户主目录&#xff0c;如果不存在的话。 如果你还想设置用户密码&#xff0c;可以使用passwd命令&#xff1a; sudo passwd 用户名这将提示你输入…

Python100题(含答案)

温馨提示&#xff1a;篇幅有限&#xff0c;已打包文件夹&#xff0c;获取方式在&#xff1a;文末 温馨提示&#xff1a;篇幅有限&#xff0c;已打包文件夹&#xff0c;获取方式在&#xff1a;文末 篇幅有限&#xff0c;这份完整版的Python100题已经上传&#xff0c;朋友们如果…

from import *

项目结构 假设我们的项目结构如下&#xff1a; my_project/ |-- dataset/ | |-- __init__.py | |-- imbalance_cifar.py | |-- balance_cifar.py |-- main.py代码示例 1. dataset/imbalance_cifar.py # dataset/imbalance_cifar.pyclass IMBALANCECIFAR10:def __init…

easyx之图形库复习--自制写轮眼的图形绘制

引子效果图如下&#xff1a; 什么是easyx&#xff1f; EasyX 是针对 C/C 的图形库&#xff0c;可以帮助使用C/C语言的程序员快速上手图形和游戏编程。比如&#xff0c;可以用 VC EasyX 很快的用几何图形画一个房子&#xff0c;或者一辆移动的小车&#xff0c;可以编写俄罗斯方…

软考 系统架构设计师系列知识点之杂项集萃(42)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;41&#xff09; 第67题 Windows操作系统在图形界面处理方面采用的核心架构风格是&#xff08; &#xff09;风格。Java语言宣传的“一次编写&#xff0c;到处运行”的特性&#xff0c;从架构风格…

AI PPT生成器,一键在线智能生成PPT工具

PPT作为商业沟通和教育培训中的重要工具&#xff0c;PPT制作对于我们来说并不陌生。但是传统的PPT制作不仅耗时&#xff0c;而且想要做出精美的PPT&#xff0c;需要具备一定的设计技能。下面小编就来和大家分享几款AI PPT工具&#xff0c;只要输入主题&#xff0c;内容就可以在…

学生分组

题目描述 有 n 组学生&#xff0c;给出初始时每组中的学生个数&#xff0c;再给出每组学生人数的上界 R 和下界 L (L≤R)&#xff0c;每次你可以在某组中选出一个学生把他安排到另外一组中&#xff0c;问最少要多少次才可以使 N 组学生的人数都在 [L,R] 中。 输入格式 第一行…

1台SW工作站5人同时使用能实现吗

在当今的数字化时代&#xff0c;高效的工作方式和技术创新是企业竞争力的重要组成部分。SolidWorks作为一款功能强大的三维设计软件&#xff0c;广泛应用于机械、电子、建筑等多个领域。然而&#xff0c;随着企业规模的扩大和团队人数的增加&#xff0c;如何充分利用有限的资源…

关于undo的问题

以下都查看下 undo保留时间&#xff1a; show parameter undo; 查UNDO段状态及自动调整的保留时间命令&#xff1a; select BEGIN_TIME,END_TIME,MAXQUERYLEN,MAXQUERYSQLID,TUNED_UNDORETENTIONfrom V$UNDOSTAT Order By begin_time Desc; 查UNDO段EXPIRED等使用情况&#…

大模型网信办备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…

Linux企业 集群批量管理-秘钥认证

集群批量管理-秘钥认证 概述 管理更加轻松&#xff1a;两个节点&#xff0c;通过秘钥认证形成进行访问&#xff0c;不需要输入密码&#xff0c;单向服务要求&#xff08;应用场景&#xff09;&#xff1a; 一些服务在使用前要求我们做秘钥认证 手动写批量管理脚本名字&#x…

【Python入门与进阶】Python 中的正则表达式

Python 中的正则表达式是通过内置模块 re 来实现的。正则表达式是一种用于模式匹配和文本处理的强大工具&#xff0c;可以用于查找、替换、分割字符串等操作。 基本用法 以下是 re 模块中一些常用的函数和方法&#xff1a; re.compile(pattern, flags0)&#xff1a;编译正则…

来自 Kubecon Paris 的快讯

一年一度的 KubeconEU 审查时间到了——它未经过滤&#xff0c;偶尔不受 CNCF 的欢迎——但剧透警告&#xff0c;巴黎取得了巨大的成功。我们总是爱这里的人&#xff0c;我们并不总是爱场地或演出管理&#xff0c;但巴黎是一场胜利&#xff0c;更重要的是&#xff0c;Kubernete…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限&#xff0c;出海开拓更广阔的国际市场需求&#xff0c;增加销售额&#xff0c;分散市场风险&#xff0c;还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海&#xff0c;要么出局”的声音。扬帆出海&#xff0c;参与全球…

C语言 | Leetcode C语言题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; //单调栈 单调递减 typedef struct {//正常 stackint stack[10000];int stackTop;//辅助 stackint minStack[10000];int minStackTop; } MinStack;MinStack* minStackCreate() {MinStack* newStack (MinStack *) malloc(sizeof(MinS…

零基础入门办公软件速成学习 沈阳电脑办公软件培训

专业指导&#xff1a;由专业的培训师或讲师提供指导&#xff0c;确保员工能够全面、系统地学习软件的各种功能和技巧。 定制课程&#xff1a;根据公司需求和员工现有水平定制课程内容&#xff0c;确保培训的针对性和实用性。 互动学习&#xff1a;通过实时演示、练习和答疑环节…

Android SurfaceFlinger——SF与HWC交互流程(六)

在上一篇 HWC2On1Adapter 初始化完成后&#xff0c;调用 initWithDevice() 实例化 HwcHal 对象&#xff0c;然后创建高级接口&#xff08;IComposer&#xff09;&#xff0c;使得调用者能够通过这个接口与硬件进行交互。这里我们就来看一下 HwcHal 和 IComposer 的初始化流程。…

到底什么是载波聚合?

载波聚合技术是无线通信系统中的一项关键创新&#xff0c;它极大地提升了数据传输的效率和速度。 这项技术的核心思想其实相当直观&#xff0c;即&#xff1a;如果能够将多个独立的通信路径或连接聚合起来&#xff0c;那么相比单一路径&#xff0c;就能够传输更多的信息。 这就…