常规算法

Posted Rainful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常规算法相关的知识,希望对你有一定的参考价值。

常规算法

  1. 优化算法分享(来自程序6)

    《Java练习题》Java习题集一 - 加速丨世界 - 博客园 (cnblogs.com)

    求解两个数的最小公倍数和最大公约数

    如果在算法过程中对整个的循环的上限做动态调整可以节约大量时间

    // 原方法
    public static int maxCommonDivisor(int num1,int num2){
        int result = 1;
        int tmp = num1>num2? num2 :num1;
        for (int i = 2; i <= tmp; i++) {
            if(num1%i == 0 && num2%i == 0){
                result = i*result;
                num1 = num1/i;
                num2 = num2/i;
                i=1;
            }
        }
        return result;
    }
    // 可以看到方法在运送过程中, i 的上限始终是 num1与num2最小值
    // 我们在写方法的时候可以考虑到,两个数的最大公约数肯定不会大于最小的那么数的一半,比如 10 与 8 的最大公约数 不会超过 8的一半;
    // 同时我们在循环体内部,可以看到,每次执行一边循环体,num1与num2就会取一次除数。在i的增加过程中,假如某一次 i=2 不能整除,那么后续过程中也不会有 i=2 可以整除的数,那么我们可以改 i=1 为 i--;
    // 修改后
    private static int maxCommonDivision(int num1, int num2){
        int result = 1;
        for (int i = 2; i <= Math.min(num1 , num2); i++){
            if (num1 % i == 0 && num2 % i == 0){
                result *= i;
                num1 /= i;
                num2 /= i;
                i--;
            }
        }
        return result;
    }
    // 修改后的算法可以大幅节约时间,i 所取的上限随着取除数之后快速减小,而且不会重复计算 i 之前的值
    

以上是关于常规算法的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案

从片段显示对话框?