前端演算法系列 搜尋

2021-10-14 07:46:08 字數 1151 閱讀 1844

遍歷陣列,找到跟目標相等的元素,就返回它的下標,遍歷結束後,沒找到就返回-1

// 時間複雜度:o(n) 迴圈

array.prototype.

sequentialsearch

=function

(item)

}return-1

};const arr =[5

,4,3

,2,1

]arr.

sequentialsearch(3

)

在有序陣列中查詢某個元素的演算法(必須是有序)

1)從陣列的中間元素開始,如果中間元素正好是目標值,則搜尋結束

2)如果目標值大於或小於中間元素,則在大於或小於中間元素的那一半陣列中搜尋

就是不停地折半搜尋

/* 時間複雜度:每一次比較都使搜尋範圍縮小一半,所以是o(logn),

凡是劈成兩半都是logn,logn比n小

*/array.prototype.

binarysearch

=function

(item)

else

if(element>item)

else

}return-1

};const arr =[5

,4,3

,2,1

]arr.

binarysearch(3

)

/*  時間複雜度:o(n) n是l1、l2長度之和

空間複雜度:o(1) 新建的臨時變數都是指標,不是陣列/矩陣/鍊錶,只是常量級別,不會增加

*/var

mergetwolists

=function

(l1, l2)

else

p = p.next // p永遠指向新鍊錶的最後一位}if

(p1)

if(p2)

return res.next

};

使用二分搜尋

var

guessnumber

=function

(n)else

if(res===1)

else}}

;

前端演算法系列 排序

排序演算法 平均時間複雜度 最壞時間複雜度 空間複雜度 是否穩定 氣泡排序 o n o n o 1 是選擇排序 o n o n o 1 不是直接插入排序 o n o n o 1 是快速排序 o nlogn o n o logn 不是希爾排序 o nlogn o n s o 1 不是冒泡 選擇 直接 ...

前端演算法系列 演算法總結

鍊錶樹 堆map 排序和搜尋 演算法設計思想 七分理解,三分記憶 技巧 三指標 反轉 回文 反轉後相同 中間劈開對稱性 技巧 雙指標 場景 最大 最小值 使用輔助棧,當大於或小於棧頂時才push進去,然後便可取棧頂的值作為最大 小值 煉表處理 合併 刪除 鍊錶反轉 鍊錶成環 完全二叉樹 可以不需要有...

演算法都是套路系列 搜尋技術模板 3

將整個搜尋過程分成兩半,分別搜尋,最後將兩半的結果合併。由於搜尋的複雜度往往是指數級的,而折半搜尋可以使指數減半,也就能使複雜度開方。有n 盞燈,每盞燈與若干盞燈相連,每盞燈上都有乙個開關,如果按下一盞燈上的開關,這盞燈以及與之相連的所有燈的開關狀態都會改變。一開始所有燈都是關著的,你需要將所有燈開...