python查找两个数组中相同的元素_找出两个数组的相同元素,最优算法?

更新时间:2023-07-07 23:06:45 阅读: 评论:0

python查找两个数组中相同的元素_找出两个数组的相同元
学习工具素,最优算法?
在做新旧接⼝交替过程中,遇到了⽼接⼝和新接⼝json数据有些不⼀致的情况,需要⽐较两个json对象,把相同的元素赋其中⼀个json对象中变量的值。⽽且其中⼀个json最后输出格式还需要改变下属性名,思来想去觉得和“找出两个数组相同元素”很像,所以做下总结。copo
“有⼀个数组A{0,2,3,5}和⼀个数组B{3,5,6,2,1,1},找出这两个数组相同元素。”
⼀开始抽象出这道题时,脑海⾥浮现出最简单粗暴的⽅法,逐⼀⽐较。
//最简单粗暴的做法,逐个⽐较,时间复杂度为(B.length)^(A.length),b的a次⽅了,时间复杂度相当⾼
for(int i = 0 ;i < A.length ; i ++){for(int j = 0 ;j < B.lengh;j++){if( A[i] ==B[j] ){
System.out.println(A[i]);
}
}
秘密花园下载module是什么意思}
后⾯脑⼦⼀转,可以先排序再进⾏⽐较,排序的话,⽤最慢的冒泡排序法,时间复杂度是(B.length)^2+(A.length)^2+(⼀些莫名其妙的⽐较算法),总之时间复杂度⽐上⾯那个算法低就是了。这是第⼆种算法,就不贴代码了。
第三种算法,思路是先把两个数组合并,再排序⼀下,重复的元素⾃然就出来了,⽽⾄于说B数组⾥⾯本来就有重复元素,这个简单,把B 数组先去重再和A数组合并就⾏了。
就是说B数组{3,5,6,2,1,1},经过去重后变成{3,5,6,2,1}acumen
public void deDuplication(int[] oraginalArr){for(int i = 0 ; i < oraginalArr.length ;i++){if(int[i]==int[i+1]){
System.out.println(int[i]);
}教师节班会主持词
商务英语考试报名时间}
}//⽤最慢的冒泡排序法,从⼩到⼤排列
public int[] sort(int[] messyArr){for(int i = 0 ;i < messyArr.length ;i++){for(int j = (i+1) ; j < (messyArr.length) ; j++){//如果第⼀个数⽐第⼆个数⼤,则两数交换
if(messyArr[i] >messyArr[j ]){int temp =messyArr[i];
messyArr[i]=messyArr[j ];
messyArr[i+1] =temp;
devo}
}低周波
returnmessyArr;
}
这样⼦时间复杂度⼀下⼦就变成了B.length+(B.length)^2,这就是算法的魅⼒。
⽹上⼜查了⼀些资料,还有⼀个⽤堆排序来找出两数组的相同元素的,时间复杂度在n(log2n)左右,感觉时间复杂度应该是最低的吧。
⾄于⽤HashMap,HashSet去重的,我感觉这些集合内部应该也是⽤了某种算法吧,感觉还是⾃⼰写的算法可以计算时间复杂度⽐较好⼀点,性能⼀算就知道了,如果有⼩伙伴能分析hashMap和hashSet去重的时间复杂度,欢迎探讨,谢谢。
>chestnut

本文发布于:2023-07-07 23:06:45,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1084470.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   复杂度   数组
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图