如果覺得前端就是畫頁面 那麼文章就不用看了 現在的崗位而言 對應前端的要求越來越高 **質量也越高 效能要求也越高
先來乙個入門基本的演算法 二分查詢 所謂的演算法都不是直接使用關鍵字indexof findincludes之類的 都是原生迴圈來實現
二分 就是一拆為2 比如乙個集合
let list = [1,2,3,4,5,6,7]
二分就是在中間拆開變成兩個陣列
list1=[1,2,3,4]
list2 =[5,6,7]
二分用在哪些地方 主要有有序陣列的查詢
但是說 list= [1.....10] 可能肉眼就知道
但是如果list = [1000,20000] 要找查詢某個數字置 就觀察不出來了
更甚至 list = 一千人的**號碼 要查詢某乙個
二分不是絕對的效能優秀 所有的優秀的 都是對比的 現在有乙個集合放1到10 要找9的的位置
普通的迴圈要找9次 二分找幾次呢
let list = [1,2,3,4,5,6,7,8,9,10]
第一次中間數 5,6都可以 目標數9
假設:middle =5
target=9
9>5 下次查詢的區間 就用二分的後者 [5,6,7,8,9,10]
接著middle = 7
target = 9
9>7 下次查詢的區間 就繼續二分為 [7,8,9,10]
繼續 middle=8
target=9
9>8 下次查詢的區間 [8,9,10]
繼續 middle = 9
target= 9
這樣就找到9的位置
二分的特點 不管多長 都是摺疊查詢 查詢的次數比較穩定長度為8的集合 最多3次 就能找到數 log 8=2 就是同理 16個數 最多需要幾次 2 ? = 16 結果是4 最多查詢四次 log16= 4
var list = [1,2,3,4,5,6,7,8,9,10];
function search(list,item)
if(guess>item)else
count++;
}return "查不到";
}let result = search(list,4);
測試效果
不管開頭還是結尾 還是中間 都穩定在 4次之前解決戰鬥
同理 100個數 找乙個數 最多7次 40億個數 找32次
二分查詢演算法1
include 二分查詢法一 using namespace std int binary search int b,int value,int n 9 int hight 9,low 0,mid while hight low 注意兩者相等的情況 mid hight low 2 if value ...
經典的查詢演算法1 二分查詢
二分查詢演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到...
分治演算法 1 二分查詢
分 把問題劃分成子問題 治 遞迴的求解子問題 合 把子問題的解合併成問題的解 在電腦科學中,二分查詢又稱為折半搜尋,二分搜尋,是一種在有序陣列中查詢某一特定元素的演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或...