zoukankan      html  css  js  c++  java
  • 如何高效地抽离出两个数组中的相同元素

    近期在面试时候遇到这么一道题目:比较两个存在大量元素的数组,抽离出他们的相同项。

    当时我脑中想到的办法是把一个数组中的元素逐个地去另一个数组中查找,但是此办法效率不高,下面给出测试代码,arry1和arry2各有一万个元素:

    private function loopCompare():void
    {
    	var startTime:int = getTimer();
    	var commonValue:Array = [];
    	var currentValue:int;
    	var index:int;
    	for(var i:int=0; i<elementCount; i++)
    	{
    		currentValue = arry1[i];
    		index = arry2.indexOf(currentValue);
    		if( index != -1 )
    		{
    			commonValue.push(currentValue);
    		}
    	}
    	trace("common count:" + commonValue.length.toString());
    	trace("time cost:" + (getTimer() - startTime).toString() + "ms");
    }

     之后,通过Google之后我发现了另一种办法:字典查找法,给予了我满意的效率,下面给出测试代码:

    private function ObjectCompare():void
    {
    	var startTime:int = getTimer();
    	var commonValue:Array = [];
    	var obj:Object = {};
    	for each(var elem:int in arry1)
    	{
    		obj[elem] = true;
    	}
    	
    	for each(elem in arry2)
    	{
    		if( obj[elem] )
    		{
    			commonValue.push(elem);
    			delete obj[elem];
    		}
    	}
    	
    	trace("common count:" + commonValue.length.toString());
    	trace("time cost:" + (getTimer() - startTime).toString() + "ms");
    }

     这个故事告诉我们,在比较数据方面,关联数组的效率要远大于一般数组。经测试,比较一万个元素,使用一般数组需要耗时677ms,而关联数组仅耗时10ms

  • 相关阅读:
    企业大数据-之机器数据
    实践和感悟
    企业级大数据处理方案03-数据流程
    scala数据库工具类
    企业生产环境集群稳定性-HA就行吗?
    企业级大数据处理方案-02.环境决定需求、性能决定选型
    Scala编程之访问修饰符
    spark-submit提交参数设置
    window.location
    [转载]Arguments
  • 原文地址:https://www.cnblogs.com/keng333/p/3195373.html
Copyright © 2011-2022 走看看