Python实现的合并两个有序数组算法示例
本文实例讲述了Python实现的合并两个有序数组算法。分享给大家供大家参考,具体如下:
思路
按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环
假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。
#coding=utf-8 #合并数据 test1 = [1,2,5,7,9] test2=[2,4,6,8,10,11,34,55] def mergetest(test1,test2): result =[] len1=len(test1) len2=len(test2) i=0 j=0 while i<len1 and j<len2: if test1[i]<=test2[j]: result.append(test1[i]) i+=1 else: result.append(test2[j]) j+=1 if i<len1: for z in range(i+1,len1): result.append(test1[z]) elif j<len2: for z in range(j+1,len2): result.append(test2[z]) return result print mergetest(test1,test2)
运行结果:
[1, 2, 2, 4, 5, 6, 7, 8, 9, 11, 34, 55]
add:链表情况下合并
def merge_link(link1,link2): head = single_link(0) first = head while link1!=None and link2!=None: if l1.val<=l2.val: head.next =l1 l1=l1.next else: head.next=l2 l2=l2.next head=head.next if l1!=None: head.next=l1 elif l2!=None: head.next=lw return first.next
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
相关推荐
-
Python对两个有序列表进行合并和排序的例子
假设有2个有序列表l1.l2,如何效率比较高的将2个list合并并保持有序状态,这里默认排序是正序. 思路是比较简单的,无非是依次比较l1和l2头部第一个元素,将比较小的放在一个新的列表中,以此类推,直到所有的元素都被放到新的列表中. 考虑2个列表l1 = [2], l2 = [1],如何将他们合并呢?(注意:下面实现会改变l1和l2本来的值) 复制代码 代码如下: def signle_merge_sort(l1, l2): tmp = [] if l1[0] < l2[0]:
-
python实现合并两个数组的方法
本文实例讲述了python实现合并两个数组的方法.分享给大家供大家参考.具体如下: python合并两个数组,将两个数组连接成一个数组,例如,数组 a=[1,2,3] ,数组 b=[4,5,6],连接后:[1,2,3,4,5,6] 方法1 a=[1,2,3] b=[4,5,6] a=a+b 方法2 a=[1,2,3] b=[4,5,6] a.extend(b) 希望本文所述对大家的Python程序设计有所帮助.
-
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
本文实例讲述了Python将多个映射合并为单个映射的方法.分享给大家供大家参考,具体如下: 问题:在逻辑上将多个字典或映射合并为一个单独的映射结构,以此执行某些特定的操作,比如查找值或者检查键是否存在 解决方案:利用collections模块中的ChainMap类 ChainMap可接受多个映射然后在逻辑上使它们表现为一个单独的映射结构.这些映射在字面上并不会合并在一起.相反,ChainMap只是简单地维护一个记录底层映射关系的列表,然后重定义常见的字典操作来扫描这个列表. # example.
-
python使用append合并两个数组的方法
本文实例讲述了python使用append合并两个数组的方法.分享给大家供大家参考.具体如下: lista = [1,2,3] listb = [4,5,6] mergedlist =[] for elem in lista: mergedlist.append(elem) for elem in listb: mergedlist.append(elem) 希望本文所述对大家的Python程序设计有所帮助.
-
基于Python中numpy数组的合并实例讲解
Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np.hstack() - np.vstack() - np.dstack() 其中最泛用的是第一个和第二个.第一个可读性好,比较灵活,但是占内存大.第二个则没有内存占用大的问题. 方法一--append parameters introduction arr 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存) values 用来合并到上述数组
-
Python实现合并两个有序链表的方法示例
本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一个链表直接接上就好 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(obj
-
Python numpy实现数组合并实例(vstack,hstack)
若干个数组可以沿不同的轴合合并到一起,vstack,hstack的简单用法, >>> a = np.floor(10*np.random.random((2,2))) >>> a array([[ 8., 8.], [ 0., 0.]]) >>> b = np.floor(10*np.random.random((2,2))) >>> b array([[ 1., 8.], [ 0., 4.]]) >>> np.vs
-
Python中多个数组行合并及列合并的方法总结
采用numpy快速将两个矩阵或数组合并成一个数组: import numpy as np 数组 a = [[1,2,3],[4,5,6]] b = [[1,1,1],[2,2,2]] 1.数组纵向合并 1) c = np.vstack((a,b)) c = array([[1, 2, 3], [4, 5, 6], [1, 1, 1], [2, 2, 2]] 2) c = np.r_[a,b] c = array([[1, 2, 3], [4, 5, 6], [1, 1, 1], [2, 2, 2
-
Python实现的合并两个有序数组算法示例
本文实例讲述了Python实现的合并两个有序数组算法.分享给大家供大家参考,具体如下: 思路 按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环 假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了. #coding=utf-8 #合并数据 test1 = [1,2,5,7,9] test2=[2,4,6,8,10,11,34,55] d
-
Java实现合并两个有序序列算法示例
本文实例讲述了Java实现合并两个有序序列算法.分享给大家供大家参考,具体如下: 问题描述 输入:序列A<a0,a1,a2,...aq,aq+1,aq+2,...,ar>,其中a0<a1<...<aq,aq+1<aq+2<...<ar 输出:序列B<b0,b1,...,br>,其中b0<b1<...<br 算法思想 创建一个长度为r的数组R,将A中的序列看作是两个有序序列 B=A<a0,a1,a2,...,aq> C
-
JS实现的合并两个有序链表算法示例
本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 可以直接运行的方案: <script> function Node(element) { this.element = element;//当前节点的元素 this.next = n
-
PHP实现合并两个有序数组的方法分析
本文实例讲述了PHP实现合并两个有序数组的方法.分享给大家供大家参考,具体如下: $arr1 = array(1,2,3,4,5,6,7,8); $arr2 = array(3,4,5,7,9,10); //方法1 function mergeOrderly1($arr1,$arr2){ $i=0;$j=0; $int = array(); while($i<count($arr1) && $j<count($arr2)){ $int[] = $arr1[$i]<$arr
-
python实现合并两个有序列表的示例代码
题目描述 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode原题地址:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 测试用例 示例1 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例2 输入:l1 = [], l2 = [] 输出:[] 示例3 输入:l1 = [], l2 = [0] 输出:[0] 代码详解 因为Lee
-
go语言题解LeetCode88合并两个有序数组示例
目录 题目描述 思路分析 AC 代码 题目描述 原题链接 : 88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列. 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中.为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素
-
Python3合并两个有序数组代码实例
第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性.(不好) 第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中一个数组长度为0.然后再把不为空的老数组中剩下的部分加到新数组的结尾.(好) 第二种思路的排序算法与测试代码如下: def merge_sort(a, b): ret = [] while len(a)>0 and len(b)>0: if a[0] <= b[0]: ret.appen
-
java实现把两个有序数组合并到一个数组的实例
如下所示: package com.test.sort; public class testMerge { public static void main(String[] args) { int[] a = { 1, 3, 5 }; int[] b = { 2, 3, 4, 7 }; merge m = new merge(); m.method(a, b); } } class merge { public void method(int[] a, int[] b) { int l = a.
-
Python寻找两个有序数组的中位数实例详解
Python寻找两个有序数组的中位数 审题: 1.找出意味着这是一个查找算法题 2.算法复杂度log级别,就是提示你是二分查找 3.二分查找实现一般为递归 (1)递归包括递归体 (2)终止条件 思路: 定理: 1.有序数组中有一半的元素小于等于数组的中位数,有一半的元素大于等于中位数(如果数组中元素个数是奇数,那么这里的一半并不是严格意义的1/2) 2.如果我们去掉其中一个数组比中位数小的k个数,再去掉另一个数组中比中位数大的k个数,得到的合并子数组的中位数和原来的中位数相同. eg:[1,2
随机推荐
- angular2路由切换改变页面title的示例代码
- php password密码验证正则表达式(8位长度限制)
- 用perl写的单位电脑信息采集程序
- JavaScript中使用Substring删除字符串最后一个字符
- 在CentOS系统上从零开始搭建WordPress博客的全流程记录
- 在Django框架中伪造捕捉到的URLconf值的方法
- C++中静态成员函数访问非静态成员的实例
- 简单分页函数一 常用
- C#调用CMD命令实例
- jQuery数据缓存用法分析
- PowerShell添加本地账户脚本分享
- 微信小程序动态的显示或隐藏控件的方法(两种方法)
- jQuery源码解读之hasClass()方法分析
- Jquery 跨域访问 Lightswitch OData Service的方法
- jquery实现图片左右切换的方法
- javascript 深拷贝
- javascript等号运算符使用详解
- QQ游戏启动加速程序使用说明图文教程
- C#程序中session的基本设置示例及清除session的方法
- 在ASP.NET 2.0中操作数据之五十:为GridView控件添加Checkbox