查找算法

Posted YFIFE

tags:

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

检索算法

顺序查找

    function seqSearch(arr, data) {
        for(var i = 0; i < arr.length; i++) {
            if(arr[i] == data) {
                return true;
            }
        }
        return false;
    }

查找最大值

    function getMax(arr) {
        if(arr.length == 0) {return}
        var max = arr[0];
        for(var i = 1; i < arr.length; i++) {
            if(arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

查找最小值

    function getMin(arr) {
        if(arr.length == 0) {return}
        var min = arr[0];
        for(var i = 1; i < arr.length; i++) {
            if(arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }

二分查找(适用于有序数列)

    function binSearch(arr, data) {
        var upB = arr.length-1;
        var downB = 0;
        while(downB <= upB) {
            var mid = Math.floor((upB + downB)/2);
            if(arr[mid] < data) {
                downB = mid + 1;
            }
            else if(arr[mid] > data) {
                upB = mid - 1;
            }
            else {
                return mid;
            }
        }
        return -1;
    }

计算重复次数

    function repeatNum(arr, data) {
        var count = 0;
        var position = binSearch(arr, data);
        if(position > -1) {
            count++;
            for(var i = position-1; i >= 0; i--) {
                if(arr[i] == data) {
                    count++;
                }else {
                    break;
                }
            }
            for(var j = position + 1; j < arr.length; j++) {
                if(arr[j] == data) {
                    count++;
                }else {
                    break;
                }
            }
        }
        return count;
    }

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

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

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

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

二叉查找树简单实现

Matlab:在一帧音频数据中查找主要频率

kmp算法的个人理解