【面试干货】 两个有序数组的合并排序

ops/2024/10/18 14:25:19/

面试干货】 有序数组合并排序>两个有序数组合并排序

  • 1、实现思想
  • 2、代码实现


💖The Begin💖点点关注,收藏不迷路💖

1、实现思想

使用两个指针分别指向两个数组的起始位置,然后逐个比较两个指针所指向的元素,将较小的元素依次放入新的数组中,同时移动相应的指针。

2、代码实现

java">package csdn; import java.util.Arrays; // 导入Arrays类,用于数组操作public class Sort { // 定义名为Sort的类public static void main(String[] args) { // 主函数入口// 定义两个已排序的数组int[] num1 = new int[]{1, 4, 9, 67, 87, 955, 1564, 12354}; int[] num2 = new int[]{-1, 0, 67, 113, 767, 879, 980};// 初始化两个指针a和b,分别指向数组num1和num2的起始位置int a = 0; int b = 0; // 定义一个新的数组,长度为两个原数组长度之和int[] num3 = new int[num1.length + num2.length]; // 遍历新数组for (int i = 0; i < num3.length; i++) { // 如果两个数组都还有元素未遍历完if (a < num1.length && b < num2.length) { // 比较当前num1和num2的元素,将较小的加入num3,并移动对应指针if (num1[a] < num2[b]) { num3[i] = num1[a]; a++; // 移动num1指针} else {num3[i] = num2[b]; b++; // 移动num2指针}} else if (a < num1.length) { // 如果num2已遍历完,但num1还有元素未加入num3num3[i] = num1[a]; // 将剩余的num1元素加入num3a++; // 移动num1指针} else if (b < num2.length) { // 如果num1已遍历完,但num2还有元素未加入num3num3[i] = num2[b]; // 将剩余的num2元素加入num3b++; // 移动num2指针}}// 打印排序后的数组num3System.out.println("排序后:" + Arrays.toString(num3)); }
}

在这里插入图片描述

  1. 初始化两个指针a和b,分别指向两个已排序数组num1和num2的起始位置。
  2. 创建一个新的数组num3,用于存放合并后的结果,其长度为num1和num2长度之和。
  3. 遍历新数组num3,循环条件为i从0到num3的长度减1。
  4. 在循环中,首先判断两个指针a和b是否都没有越界(即是否都小于各自数组的长度):
    • 如果都没有越界,则比较num1[a]和num2[b]的大小:
      • 如果num1[a]小于num2[b],则将num1[a]放入num3中,并将指针a向后移动一位;
      • 如果num1[a]大于等于num2[b],则将num2[b]放入num3中,并将指针b向后移动一位。
    • 如果有一个指针越界了(即数组已遍历完),则将另一个数组剩余部分直接放入num3中,不再进行比较。
  5. 最后,输出排序后的数组num3。

这种合并已排序数组的方法称为"归并"(Merge)算法,时间复杂度为O(n),其中n为两个数组的总长度。


💖The End💖点点关注,收藏不迷路💖

http://www.ppmy.cn/ops/42009.html

相关文章

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff0c;每套四十题选择题&#xff09;获取&#xff08;WX:…

基于RK3568的鸿蒙通行一体机方案项目

鸿蒙通行一体机方案以鸿蒙版AIoT-3568X人工智能主板为核心平台&#xff0c;搭载OpenHarmony操作系统&#xff0c;使用自研算法和国产芯片&#xff0c;可管可控&#xff0c;并提供身份识别以及其他外设配件生态链支持。 01 项目概述 项目使用场景 鸿蒙版通行一体机方案凭借自主…

OpenAI将最强人工智能拉入现实:GPT-4o情感交互颠覆认知——钢铁侠的“贾维斯”出生了,还是个女娃!

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的科幻概念&#xff0c;而是逐渐渗透进我们的日常生活。近期&#xff0c;OpenAI公司宣布推出其最新的人工智能模型GPT-4o&#xff0c;这一模型以其卓越的情感交互能力和高度的智能化水平&a…

C# .Net8 switch 的用法

在 .net 8中&#xff0c;switch 不需要再和传统的写法一样了&#xff0c;会更加的方便 创建一个 .net 8 控制台项目 switch 的写法没必要和以前一样 namespace SwitchTest {internal class Program{static void Main(string[] args){int day 3;var week day switch{1 > &…

析构函数详解

目录 析构函数概念特性对象的销毁顺序 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f978; C语言 &#x1f43f;️&#x1f43f;️&#x1f43f;️ C语言例题 &…

电力系统潮流计算的计算机算法(四)——PQ快速解耦潮流算法

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第四篇笔记。上一篇传送门。 潮流计算的快速解耦法 牛顿-拉夫逊法潮流计算&#xff0c;主要的工作量在于形成雅可比矩阵和求解修正方程。由于雅可比矩阵的阶数为nm-1&#xff0c;约为节点总数的两倍&#xff0c;非…

设备接入物联网平台必须掌握的关键信息——青创智通

工业物联网解决方案-工业IOT-青创智通 设备接入物联网平台需要掌握的信息相当丰富且复杂&#xff0c;这涉及到多个层面&#xff0c;包括技术细节、平台选择、安全性考虑以及后期管理与维护等。以下将详细阐述设备接入物联网平台所需掌握的关键信息。 首先&#xff0c;我们需要…