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


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

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

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

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

    冒泡法排序(非原创)

    测试结果:



    所谓的最笨的方法:

    自我感觉最笨的作法

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

    相关代码下载
  • 相关阅读:
    Gitlab安装之后不能正常启动案例解决
    SSH远程采用普通用户登录linux主机报错解决方法
    记一次AD域控客户端不能正常加域的故障处理
    Horizon7.9部署和克隆问题汇总
    VMware Guest customization fails on Linux
    Ubuntu18.04安装rabbitvcs svn图形化客户端和简单实用
    Ubuntu访问samba共享文件方法
    CentOS版本禁用Ctrl+Alt+Del重启功能
    02Kubernetes架构和组件
    01Kubernetes核心概念
  • 原文地址:https://www.cnblogs.com/yyw84/p/399474.html
Copyright © 2020-2023  润新知