成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

javascript數(shù)據(jù)結(jié)構(gòu)與算法——搜索算法

TZLLOG / 1208人閱讀

摘要:前言本書(shū)當(dāng)中說(shuō)了兩種搜索算法,篇幅都不大,因?yàn)槿诤狭酥暗闹R(shí)點(diǎn),所以看起來(lái)會(huì)相對(duì)簡(jiǎn)單一,主要包括兩個(gè)內(nèi)容順序搜索二分搜索順序搜索從字面的意思來(lái)看,就是按照順序一個(gè)一個(gè)找下去的意思,直到找到為止。該搜索算法要求被搜索的數(shù)據(jù)結(jié)構(gòu)已排序。

前言

本書(shū)當(dāng)中說(shuō)了兩種搜索算法,篇幅都不大,因?yàn)槿诤狭酥暗闹R(shí)點(diǎn),所以看起來(lái)會(huì)相對(duì)簡(jiǎn)單一,主要包括兩個(gè)內(nèi)容:

順序搜索

二分搜索

順序搜索

??從字面的意思來(lái)看,就是按照順序一個(gè)一個(gè)找下去的意思,直到找到為止。搜索的結(jié)果可以返回true、當(dāng)前索引、當(dāng)前值,否則返回false,-1,null等內(nèi)容,我們看如下一段代碼:

    var sequentialSearch = function(item){
        for (var i = 0;i

??整體的思路就是遍歷數(shù)據(jù),然后把遍歷到的每項(xiàng)內(nèi)容,跟我們要查找的元素相比較,如果值相等就遍歷結(jié)束,使用 return 返回,否則在遍歷結(jié)束的時(shí)候返回其它內(nèi)容。
假定有如下數(shù)組,我們要在里面查找值為3的元素項(xiàng):

[5,4,3,2,1]

搜索的示意圖如下:

二分搜索

??所謂的二分,就是把數(shù)據(jù)一分為二,首先選中一個(gè)中間值,如果中間值是需要查找的,那么返回該值,否則拿需要查找的值跟這個(gè)中間值比較,然后依次循環(huán)執(zhí)行這個(gè)步驟,直到找到為止。

    該搜索算法要求被搜索的數(shù)據(jù)結(jié)構(gòu)已排序。

選擇數(shù)組的中間值

如果中間值是待搜索值,那么算法執(zhí)行結(jié)束

如果待搜索的值比中間值小,則返回第一步,在選中值得左邊尋找

如果待搜索的值比中間值大,則返回第二步,在選中值得右邊尋找

代碼實(shí)現(xiàn):

    let binarySearch = function(item){
        // 因?yàn)橐笙扰判?        quickSort(array);
        
        let low = 0,
            hight = array.length - 1,
            mid,element;
        
        while (low <= high){
            mid = Math.floor((low + high) / 2);
            element = array[mid];
            if(element < item){
                low = mid + 1;
            }else if(element>item){
                high = mid - 1;
            }else{
                return mid;
            }
        }
        return -1;
    }

一下是算法執(zhí)行的步驟示例圖:

這里的內(nèi)容大部分是書(shū)中摘抄的內(nèi)容,中間說(shuō)到了快速排序,您可以查閱其它的資料去了解下,排序算法相關(guān)的內(nèi)容,JS常見(jiàn)的排序算法主要有,當(dāng)然我們這里也可以使用其它排序方法,比如:冒泡排序、選擇排序、插入排序、歸并排序等。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/95739.html

相關(guān)文章

  • 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)算法 — 深度優(yōu)先搜索算法

    摘要:深度優(yōu)先搜索上一次已經(jīng)提到,圖的遍歷一般有兩種算法,即廣度優(yōu)先和深度優(yōu)先。用深度優(yōu)先搜索算法對(duì)圖中的任務(wù)圖進(jìn)行拓?fù)渑判蜃罱K各頂點(diǎn)的發(fā)現(xiàn)和探索完成時(shí)間會(huì)保存在中。 深度優(yōu)先搜索(DFS) 上一次已經(jīng)提到,圖的遍歷一般有兩種算法,即廣度優(yōu)先和深度優(yōu)先。其中深度優(yōu)先搜索算法會(huì)從第一個(gè)指定的頂點(diǎn)開(kāi)始遍歷圖,沿著路徑直到這條路徑最后一個(gè)頂點(diǎn),接著原路回退并探索下一條路徑。換句話說(shuō),它是先深度后廣...

    李增田 評(píng)論0 收藏0
  • 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)算法 — 廣度優(yōu)先搜索算法

    摘要:廣度優(yōu)先搜索上一次已經(jīng)提到,圖的遍歷一般有兩種算法,即廣度優(yōu)先和深度優(yōu)先。其中廣度優(yōu)先搜索算法會(huì)從指定的第一個(gè)頂點(diǎn)開(kāi)始遍歷圖,先訪問(wèn)其所有的相鄰點(diǎn),就像一次訪問(wèn)圖的一層。其它最短路徑算法對(duì)于加權(quán)圖的最短路徑,廣度優(yōu)先算法可能并不合適。 廣度優(yōu)先搜索(BFS) 上一次已經(jīng)提到,圖的遍歷一般有兩種算法,即廣度優(yōu)先和深度優(yōu)先。其中廣度優(yōu)先搜索算法會(huì)從指定的第一個(gè)頂點(diǎn)開(kāi)始遍歷圖,先訪問(wèn)其所有的...

    eternalshallow 評(píng)論0 收藏0
  • 算法系列——JavaScript中廣度優(yōu)先搜索思想實(shí)現(xiàn)

    摘要:散列表上面的地圖向我們展示了如何用廣度優(yōu)先搜索的思想找到北京到廣州的最短路線。在廣度優(yōu)先搜索中,我們需要用到隊(duì)列的這種思想來(lái)實(shí)現(xiàn)查找。建立了下面這個(gè)模型武漢廣州西藏上海上海武漢廣州代碼完整實(shí)現(xiàn),利用遞歸和廣度優(yōu)先搜索的思想實(shí)現(xiàn)。 什么是廣度優(yōu)先搜索? 如果只是是背概念,幼兒園的小朋友都能背下來(lái)念給你聽(tīng)。 假設(shè)看這篇文章的都和我一樣是個(gè)前端工程師,我們要從廣度優(yōu)先搜索(BFS)中學(xué)到什么...

    everfly 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<