【Python】合并有序数组两种方法

合并两个有序数组(超详细) 详细讲解合并两个有序数组方法 阅读详情

数组是程序设计语言的通用称呼,在python里,列表就是我们常说的数组(以下列表 = 数组)

目录

1、用指针合并两个有序数组(两个都是有序的)

2、用sort函数合并两个有序数组


1、用指针合并两个有序数组(两个都是有序的)

先看下面两个数组

arr1 = [1 , 3 , 4 , 6  ,10]

arr2 = [2 , 5 , 8 ,11]

先了解下思路,我们运用的方法是将某一个数组加入到另一个数组中去,接下来详细看:(这里arr2加入到arr1中)

首先 拿出2与arr1中的第一个元素比较,2比1大,那么在再比较arr1的下一个元素,2比3小,则2加入1后面3前面的位置,同时3后面的元素都要向后移动一个位置。那么5,8,11以此类推,值得注意的是,由于两个都是有序数组,那么2比1大,arr2的第二个元素就没有必要与1比较了,5直接与3比较即可,后面继续比较。最后如果11后还有很多元素,那么既然11都比arr1的最后一个元素大了,其后的元素一定比10大,直接加入到11后即可。将过程转换为程序:

#用指针合并两个有序数组.py

arr1 = [1,3,4,6,10]             #初始化两个数组
arr2 = [2,5,8,11]
ans = arr1.copy()               #承载排序后的数组
ind = 0                         #ind是作为第一个数组的下标的
for i in range(0,len(arr2)):    #遍历第二个数组的每一个元素
    while ind < len(arr1):      #ind是作为第一个数组的下标的,并且不超过第一个数组的最大下标
        if arr2[i] <= arr1[ind]:#这里没有用for循环遍历第一个数组
                                #是因为要考虑不止有一个元素要插入到某两个元素之间的情况
            ans.insert(ind + i , arr2[i])
                                #向第一个数组中的合适位置插入第二个数组中的数
            break
        else:
            ind += 1            #如果ind指向的数(即arr1中的下标为ind的数)比i指向的数(即arr2 
                                #中下标为i的数) 小,则ind向后移一位,跟arr1中的下一个数比较      
    else:
        ans = ans + arr2[i:]    #如果arr1中的数已经被遍历完了,那么将arr2中剩下的数直接加在arr1 
                                #最后就可以了
        break
print(ans)

这是运用模拟指针完成了两个有序数组的合并,还有就是为什么不用arr1直接存储改动后的数组,是因为如此的话会丢失arr1中的元素,但是用ans存储,调用arr1中的元素与arr2中的元素去比较,就有效避免了这个问题

2、用sort函数合并两个有序数组

这个方法是更简单的,但是用的时间更长一些

arr1 = [1,3,4,6,10]
arr2 = [2,5,8,11]
ans = arr1 + arr2
ans.sort()        #默认使用升序
print(ans)

两个方法都可以

windows版kafka异常java.nio.file.FileSystemException另一个程序正在使用此文件,进程无法访问 环境 现象 原因 解决方法 参考 阅读详情

相关推荐

从Mate到Mate40 Pro+:华为旗舰核心配置演进与选购避坑指南

本文回顾了华为Mate系列从初代到Mate40 Pro+的核心配置演进历程,重点分析了处理器性能、影像系统、屏幕设计及续航快充的技术突破。针对选购需求,提供了区分版本、5G选择及存储配置的实用避坑建议,帮助消费者明智选择华为旗舰机型。

weixin_30015371的博客 457

合并两个有序数组的三种方法

标题 这是关于C语言如何合并两个有序数组的三种方法 方法一: 将两个有序数组a和b容纳到另一个数组c中 算法思想:创建一个新数组c,把有序数组a和有序数组b中的元素放到新创建的数组c中,然后利用冒泡排序把数组c中的元素进行有序排序。 代码实现如下: 代码运行结果为 方法二: 将两个有序数组a和b容纳到另一个数组c中 算法思想:创建一个新的数组c,此数组的大小大于或等于已知两个数组之和。通过比...

Lchilde的博客 4万+

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 134

如何快速合并两个有序数组

前言 大家好,我是来自于「华为」的「程序员小熊」。今天给大家带来一道与「数组」相关的题目,这道题同时也是字节、微软和亚马逊等互联网大厂的面试题,即力扣上的第 88 题-合并两个有序数组。 本文主要介绍「逆向双指针」的策略来解答此题,供大家参考,希望对大家有所帮助。 合并两个有序数组 题目描述 示例1: 输入:nums1=[1,2,3,0,0,0],m=3,nums2=[2,5,6],n=3 输出:[1,2,2,3,5,6] 示例2: 输入:nums1=[1]...

5108

合并有序数组

文章目录一、[leetcode88] 合并两个有序数组1.1 直接合并后排序1.2 双指针法1.3 逆向双指针二、合并多个有序数组2.1 合并后排序2.1.1拉平数组2.2归并排序 一、[leetcode88] 合并两个有序数组 题目描述,请看这里 解法: 1.1 直接合并后排序 function merge(nums1, m, nums2, n) { nums1.splice(m, nums1.length, ...nums2); nums1.sort((a,b) => a-b); }

weixin_44761091的博客 3152

合并多个有序数组

3、当某一个有序数组的元素被选完时,他就已经没有下个元素了,这时我们就需要将堆尾元素与堆顶元素进行替换,然后小堆的有效元素个数减1,而对于正常情况的话则对对顶元素进行正常替换即可;我们现在有多个已经有序的数组,我们知道每个有序数组的元素个数和总共的有序数组的个数,现在请设计一个算法来实现这多个有序数组合并合并成一个数组);输入:[1,2,3,4,5,],[6,7],[8,9,10],[11,12,13,14];输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14];

南猿北者博客 3107

算法第二十三天-合并两个有序数组

直接利用Python自带的语句进行合并和排序。

weixin_43186779的博客 987

leetcode-88 | 合并两个有序数组

title: leetcode-88 | 合并两个有序数组 date: 2019-4-23 13:42:04 comments: true categories: “leetcode” tags: - leetcode 简单难度 88. 合并两个有序数组(Merge Sorted Array) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num...

梦否 402

合并两个有序数组(Python)

题目: 给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组 注意: 1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n 2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了 3. A 数组在[0,m-1]的范围也是有序的 示例1 输入:[4,5,6],3,[1,2,3],3 返回值:[1,2,3,4,5,6] 说明: A数组为[4,5,6],B数组为[1,2,3

努力搬砖的打工人 3087

两种思路将Python中两个有序数组合并为一个有序数组

第一种思路: 把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性。 第二种思路: 循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中一个数组长度为0。然后再把不为空的老数组中剩下的部分加到新数组的结尾。 第二种思路的排序算法与测试代码如下: def merge_sort(a, b): ret = [] while len(a)>0 and len(b)>0: if a[0] <= b[0]:

Python热爱者的博客 3600

Python 合并两个有序数组

数组整体进行排序即可。

u011699626的博客 637

(Leetcode) 合并两个有序数组- Python实现

题目:合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 Given two sorted integer arraysnums1andnums2, mergenums2intonums1as one sorted array. 说明: 初始化 nums1 和 nums2 的元素数量分...

weixin_42077402的博客 313

python3合并两个列表考虑一个用毕_Python3合并有序数组 Python3合并两个有序数组代码实例...

想了解Python3合并两个有序数组代码实例的相关内容吗,天外归云在本文为您仔细讲解Python3合并有序数组的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python3,合并,有序数组,下面大家一起来学习吧。第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性。(不好)第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到新数组中...

weixin_32466167的博客 146

LeetCode88. 合并两个有序数组 python

不借助额外的数组 class Solution: def merge(self, nums1, m, nums2, n): while m>0 and n >0: if nums1[m-1] >= nums2[n-1]: nums1[m+n-1] = nums1[m-1] ...

See_the_world的博客 594

数组-88.合并两个有序数组

1.题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 ...

niuchi2570的博客 146

力扣 NO.88 合并两个有序数组

目录题目方法一:利用归并排序中,合并有序数组的思想方法二:直接数组合并 + sort() 题目 方法一:利用归并排序中,合并有序数组的思想 class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. "

qq_33489955的博客 458

88.合并两个有序数组

题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 =...

yungezier的博客 843

力扣合并两个有序数组

力扣合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 ...

dayday学习的博客 753

合并两个有序数组(力扣刷题记录)

static void sort(ElementType[] a, int FromIndex, int ToIndex) :在指定范围(FromIndex, ToIndex)内升序排序。companies.sort(key=sort_key, reverse=True) :对列表中的关键字key进行从大到小排序。给两个数组设置指针,对指针所指的数进行比较,小的进入数组,指针后移,继续比较,直到没有位置可移动。list.sort() :对列表进行原地从小到大排序 (字母和数字都可以)以上代码来源于力扣。

qq_64374335的博客 952

88. 合并两个有序数组

88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums

lhn的博客 83

LeetCode每日一题--合并两个有序数组

LeetCode刷题笔记之合并两个有序数组

Mingw_的博客 409
上一篇: 【Pyhton】Error expected an indented block
下一篇: 北理工嵩天Python网络爬虫与信息提取MOOC 测验2: Python网络爬虫之提取 (第2周)
云之声759
博客等级 码龄8年 175粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值