前端中的演算法1 二分查詢

2021-10-11 18:03:20 字數 1436 閱讀 2120

如果覺得前端就是畫頁面 那麼文章就不用看了   現在的崗位而言  對應前端的要求越來越高   **質量也越高   效能要求也越高

先來乙個入門基本的演算法 二分查詢    所謂的演算法都不是直接使用關鍵字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 二分查詢

分 把問題劃分成子問題 治 遞迴的求解子問題 合 把子問題的解合併成問題的解 在電腦科學中,二分查詢又稱為折半搜尋,二分搜尋,是一種在有序陣列中查詢某一特定元素的演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或...