首页 > 编程语言 > 详细

搜索算法

时间:2020-07-03 22:40:02      阅读:62      评论:0      收藏:0      [点我收藏+]

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

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[i]){
            return mid
        }else if(val > sortArr[mid]){
            lowIndex = mid + 1
        }else if(val < sortArr[mid]){
            highIndex = mid -1
        }else{
            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)
    }
}

  

 

 

搜索算法

原文:https://www.cnblogs.com/zhenjianyu/p/13232581.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!