zoukankan      html  css  js  c++  java
  • 搜索算法

    顺序搜索:顺序或线性搜索是最基本的搜索算法。它的机制是将每一个数据结构中的元素和我们要找的元素作比较。顺序搜索是最低效的一种搜索算法。

    function sequentialSearch(arr,val){
        for(let i = 0;i < arr.length;i++){
            if(val == arr[i]){
                return i
            }
        }
        return -1
    } 

    二分搜索:这种算法要求被搜索的数据结构已排序。以下是该算法遵循的步骤。

    1.  选择数组的中间值。
    2. 如果选中值是待搜索值,那么算法执行完毕。
    3. 如果待搜索值比选中值要小,则返回步骤1并在选中值左边的子数组中寻找(较小)。
    4. 如果待搜索值比选中值要大,则返回步骤1并在选中值右边的子数组中寻找(较大)。
    function binarySearch(arr,val){
        const sortArr = quickSort(arr)
        let lowIndex = 0
        let highIndex = sortArr.length-1
        while(lowIndex <= highIndex){
            let mid = Math.floor((lowIndex + highIndex) / 2)
            if(val > sortArr[mid]){
                lowIndex = mid + 1
            }else if(val < sortArr[mid]){
                highIndex = mid -1
            }else{
                return mid
            }
        }
        return -1
    }

    内插搜索:是改良版的二分搜索。

    随机算法:它的含义是迭代数组,从最后一位开始并将当前位置和一个随机位置进行交换。这个随机位置比当前位置小。这样可以保证随机过的位置不会再随机一次。

    function shuffle(arr){
        for(let i = arr.length-1;i > 0;i--){
            const randomIndex = Math.floor(Math.random() * (i+1))
            swap(arr,i,randomIndex)
        }
    }
    

    注:我觉得const randomIndex = Math.floor(Math.random() * (i+1))有些问题,应该是const randomIndex = Math.floor(Math.random() * i)。

  • 相关阅读:
    禁止input输入框输入指定内容
    js鼠标按键事件和键盘按键事件用法实例汇总
    JSONP实现跨域
    DedeCMS学习
    原生JS实现瀑布流
    常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解
    Ajax学习整理
    Python学习【第三篇】Python变量
    Python学习【第二篇】Python入门
    Python学习【第一篇】Python简介
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13232581.html
Copyright © 2011-2022 走看看