社区
JavaScript
帖子详情
两个数组比较(算法) 怎样算最优化!
friendyours
2003-05-19 05:40:05
两个数组比较(算法) 怎样算最优化!
有两个数组,他们包含的元素 有部分相同,arrayOne,arrayTwo;
目的是将他们的交集存储在 temp数组中;arrayOne中除交集外的部分存储在tempOne数组中;arrayTwo中除交集外的部分存储在tempTwo数组中;
怎样的算法最优化!
...全文
1306
9
打赏
收藏
两个数组比较(算法) 怎样算最优化!
两个数组比较(算法) 怎样算最优化! 有两个数组,他们包含的元素 有部分相同,arrayOne,arrayTwo; 目的是将他们的交集存储在 temp数组中;arrayOne中除交集外的部分存储在tempOne数组中;arrayTwo中除交集外的部分存储在tempTwo数组中; 怎样的算法最优化!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
emu
2003-05-20
打赏
举报
回复
llrock(百乐宝||昨夜星辰):
----------------------------------------------------------
以比较为基本操作的时间复杂度为o(a1.length * a2.length)。
----------------------------------------------------------
那要是a1.length=100,a2.length=100,时间复杂度就是O(10000)咯!?
至于排序或者构建二叉树,没有compare算法怎么排怎么构?
llrock
2003-05-19
打赏
举报
回复
修正一下,创建的前序(或后序)遍历二叉树才是排序好的所有差异元素
llrock
2003-05-19
打赏
举报
回复
我说一个方法:
·利用二叉树排序算法,需要修改一下,添加一个条件如果想等就存起来,否则创建二叉树
最终你将得到一个排序好的树组,这个数组将是存在差异的所有元素,而之前保存起来的就是你要的相同元素,一举两得。
这种算法的时间复杂度为O(a1.length + a2.length),但是基本操作为想二叉树中添加节点的操作。
llrock
2003-05-19
打赏
举报
回复
回复人: cpp2017(慕白兄) ( ) 信誉:100 2003-05-19 18:05:00 得分:0
不论怎样算,总之是要遍历两个数组
要比较
a1.length * a2.length次
</慕白兄>
双手同意,但我想时间复杂度肯定不是O(2),只见过0(1)的,从没见过o(2)的,以比较为基本操作的时间复杂度为o(a1.length * a2.length)。
emu
2003-05-19
打赏
举报
回复
简单数据类型这样就够了,对于对象类型要考虑到对象的toString方法能否为不同的对象返回不同值,因为sort方法在不指定比较函数是默认使用toString方法来比较的。
考虑下面的例子:
function myObj(n){
this.emu=n;
}
var myAr=[new myObj(5),new myObj(3),new myObj(3),new myObj(7),new myObj(2),new myObj(6)];
myAr.sort();
for (var i=0;i<myAr.length;i++)
document.write(myAr[i].emu+"<Br>");
当然这个例子中改一下比较函数就成了:
myAr.sort(function (a,b){return a.emu-b.emu});
但是更复杂的情形下就未必了,比尔有多个属性和方法的对象,怎么compare?
imafool
2003-05-19
打赏
举报
回复
我说说我的一点浅见:
考虑到是在JavaScript中实现,先利用String.sort()对两个数组排序,再将数组的最小值与数组的最小值比较……排除比它小的再比权。基本思路就是这样了……
emu
2003-05-19
打赏
举报
回复
如果要设计一个通用的哈希算法恐怕计算量大了点(因为系统没有提供现成的,自己做要考虑到每个元素的构造器和递归遍历元素的所有属性值),如果知道了元素的类型有针对性的做一个就高效的多。具体的例子就不给了。
emu
2003-05-19
打赏
举报
回复
cpp2017(慕白兄) :这样做的时间复杂度为O(2)。其实可以优化一下:
1 为每个对象定义哈希算法,
2 把每个数组按哈希值排序,
3 从头到尾比较数组的元素
排序时间复杂度为O(1.3),之后的遍历过程时间复杂度就降到O(1)了。
cpp2017
2003-05-19
打赏
举报
回复
不论怎样算,总之是要遍历两个数组
要比较
a1.length * a2.length次
</慕白兄>
PHP 快速排序
算
法
详解
概念 这里借用百度百科的一张图来,非常形象: 快速排序
算
法
是对冒泡
算
法
的一个优化。他的思想是先对
数组
进行分割, 把大的元素数值放到一个临时
数组
里,把小的元素数值放到另一个临时
数组
里(这个分割的点可以是
数组
中的任意一个元素值,一般用第一个元素,即$array[0]),然后继续把这
两个
临时
数组
重复上面拆分,最后把小的
数组
元素和大的
数组
元素合并起来。这里用到了递归的思想。 PHP实现 复制代码 代码如下: /* 快速排序 */ function quickSort($array) { if(!isset($array[1])) return $array;
数组
常见
算
法
比较
1.选择排序基本思想: 选择排序的基本思想是将指定排序位置与其他
数组
元素分别对比,如果满足条件则交换元素。
算
法
示例: 如图,先将下标为0的
数组
元素分别与其他元素相比,23<45,不交换(从小到大排序),再
比较
23与6,交换……这样将23与其他元素
比较
后,下标为0的元素变成了6。再将下标为1的元素与下标为2,3,4,5的元素进行
比较
,经过5轮这样的
比较
后,就可完成排
c语言求
数组
交集并集差集,求
两个
数组
的交集、并集和差集
算
法
分析与实现
本文采用一种交换的方式来求出
两个
数组
的并集,交集和差集,这种
算
法
运
算
速度较快,内存消耗空间较少,是一个值得学习的好方法,另外,作者提醒您,重要的不是
算
法
本身,而是该
算
法
会开拓我们的思维空间,要注意对问题的多思考。
算
法
概述:
两个
任意元素的
数组
,
比较
出
两个
数组
中相同的元素和不同的元素。元素划分:计
算
过程中,
两个
数组
内部元素的划分:
算
法
流程:从
数组
1的尚未
比较
的元素中拿出第一个元素array1(i),用...
算
法
分析:合并
两个
有序
数组
目录前言第一种方法:暴力解法第二种解法:归并排序第三种解法:优化归并排序总结 前言 这道题目说实话看起来很简单,就是把
两个
数组
按顺序排序到一个新的
数组
里面,然后这
两个
数组
还是有序的,但是这里面还有有学问的,一共三个方法,每个方法都是前面一个方法的进阶,所以还是很有讲究的。 题目网址:https://leetcode-cn.com/problems/merge-sorted-array/ 第一种方法:暴力解法 这种方法简单粗暴,就是把
两个
数组
放到一起,然后直接进行排序。 不多说直接上代码: clas
最快速度求
两个
数组
之交集
算
法
与hash
一个题目 该题目来自58同城的二面,用最快速度求
两个
数组
之交集
算
法
。 比如A={6,2,4,1},B={2,9,4,3},那么A&B={2,4}。
算
法
一:在大多数情况,也就是一般的情况下,大家都能想出最暴力的解法,通常也就是采用遍历或者枚举的办法来解决问题。 该题需要找出
两个
数组
的交集,最简单的一个办法就是用A
数组
里面的所有数去匹配B
数组
里面的数。假设
两个
数组
的大小都是n,...
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章