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[] 上,有时间再想一下其它数据类型的比较

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

    冒泡法排序(非原创)

    测试结果:



    所谓的最笨的方法:

    自我感觉最笨的作法

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

    相关代码下载
  • 相关阅读:
    17-vue-cli脚手架安装和webpack-simple模板项目生成
    15-其它
    14-表单输入绑定
    k8s组件通信或者创建pod生命周期
    升级CentOS 7.4内核版本--升级到最新
    Linux
    Statefulset的拓扑状态
    nginx浏览器开启密码验证
    为什么我们需要Pod?(容器设计模式sidecar)
    mysql内存优化
  • 原文地址:https://www.cnblogs.com/yyw84/p/399474.html
Copyright © 2011-2022 走看看