にぶんせんけいたんさく

3681 ワード

私たちは仕事の中で時々大量のデータを分析する必要がありますが、これは二次線形のアルゴリズムを使うべきです.これは二次線形と言わざるを得ない.
二次線形とは何か、二次線形といえば再帰(recursion)と言いましょう.再帰はプログラム呼び出し自体のプログラミングテクニックです.再帰はアルゴリズムとしてプログラム設計言語に広く応用されている.1つのプロセスまたは関数は、その定義または説明において、直接または間接的に自身を呼び出す方法があり、通常、大規模で複雑な問題の階層を元の問題に似た規模の小さい問題に変換して解き、再帰戦略は少量のプログラムで問題を解くプロセスに必要な複数回の繰り返し計算を記述することができ、プログラムのコード量を大幅に減少させる.再帰的な能力は、有限な文でオブジェクトの集合を定義することです.一般に、再帰には境界条件、再帰前進セグメント、再帰帰還セグメントが必要である.境界条件が満たされない場合、再帰的に前進する.境界条件が満たされると、再帰的に返されます.
実例を用いて説明しましょう.
  
//        
        var arr = [];//                   
        for(var i = 0; i < 10000; i++) {
            arr[i] = i + 1;
        }

        function find(num, start, end) {//             ,           ,            (  0),            (      )

            if(start > end) {//            
                return false;
            } else if(start == end) { //          
                if(arr[start] == num) {
                    return true;
                } else {
                    return false;
                }
            }

            var center = Math.floor((start + end) / 2);//        ,
            if(num == arr[center]) {//
                return true;
            } else {
                if(num < arr[center]) {
                    return find(num, 0, center);
                } else {
                    return find(num, center + 1, end)
                }
            }
        }
        console.log(find(33333, 0, arr.length - 1))
     console.log(find(3333, 0, arr.length - 1))

これにより、ページのコンソールにfalseとtrueの2つの値が表示されます.falseは配列に33333という数がないという意味で、trueは配列の中で3333という数が見つかったことを意味します.
//以下は個人的な見解
二分線形アルゴリズムはこのようなものです.forループだけでデータを検索するのは時間の無駄で、パソコンのCPUは大きな試練なので、データが大きすぎるとページが詰まってしまいます.
二分線形アルゴリズムは、長すぎるデータをセグメント化して計算し始めることです.二分線形は二つのセグメントに分けることができるだけでなく、会社のプログラマーのアルゴリズムエンジニアの能力を見ることができます.
 
転載先:https://www.cnblogs.com/Z-Xin/p/7113029.html