zoukankan      html  css  js  c++  java
  • 比较高效地实现从两个不同数组中提取相同部分组成新的数组(只支持Int类型) [C#]

            有时候我们需要从两个不同数组中提取出相同的部分的数组或者计算有多少个相同的项,这个算法刚好能派上用场,

    实现方案:
    1、将两个数组按从小到大排序;
    2、遍历第一个数组 array1,跟第二个数组 array2 做比较;
    3、如果找到相等的则提取出该数据并且记录下 array2 的下标到临时变量 t,下次循环则从 array2[t+1] 开始遍历 array2;
    4、如果没有匹配到相等的而且 array2[t] 大于与 array1 对比的数据时, 记下 array2 当前下标到临时变量 t,下次循环则从 array2[t] 开始;

    经过测试,该算法比“最笨”的作法无法在数组以何种方式排序都要强,如果量越多会越明显,有点可惜的是暂时只能使用在 Int[] 上,有时间再想一下其它数据类型的比较

    获取两个整型数组中相等项的集合

    冒泡法排序(非原创)

    测试结果:



    所谓的最笨的方法:

    自我感觉最笨的作法

    从图中可以看到运行效率有了很大的提升,
    以上只是不成熟的解决方案,欢迎各位一起来讨论!

    相关代码下载
  • 相关阅读:
    EVRYTHNG.H
    关于轮胎尺寸问题
    常见内核数据结构.doc
    i5处理器的台式机[百度知道]
    debug和release版区别
    booklist 转
    windows 系统编程 Chap7 线程和调度
    一个超级简单的dwr配置文件,介绍了dwr最常用的几个标签(转)
    用凭据管理器提升Windows7访问速度(非原创)
    IEC87005104 传输规约(国电)
  • 原文地址:https://www.cnblogs.com/yyw84/p/399474.html
Copyright © 2011-2022 走看看