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)。

  • 相关阅读:
    SQL Server 排序实现函数细说
    hibernate的11大优势
    JSP开发使用JSTL和EL表达式问题
    Java开源框架集
    Struts实现登陆
    如何取得ResultSet的行数
    SQL Server2005 ROW_NUMBER() OVER 使用
    Struts中perform方法1.2.4版本以后都不在使用
    家长会随笔
    几何画板图像复制
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13232581.html
Copyright © 2011-2022 走看看