演算法基礎 --- 日常總結
master公式
master公式(也稱主方法)是用來利用分治策略來解決問題經常使用的時間複雜度的分析方法,(補充:分治策略的遞迴解法還有兩個常用的方法叫做代入法和遞迴樹法,以後有機會和親們再嘮),眾所周知,分治策略中使用遞迴來求解問題分為三步走,分別為分解、解決和合並,所以主方法的表現形式:
T (n) = aT(n/b) + O(N^d)
其中 a >= 1 and b > 1 是常量,其表示的意義是n表示問題的規模,a表示遞迴的次數也就是生成的子問題數,b表示每次遞迴是原來的1/b之一個規模,f(n)表示分解和合並所要花費的時間之和。
解法:
- 當d<logb a時,時間複雜度為O(n^(logb a))
- 當d=logb a時,時間複雜度為O((n^d)*logn)
- 當d>logb a時,時間複雜度為O(n^d)
二分查詢
function binarySearch(arr,value){
let left = 0;
let right = arr.length - 1;
let middle;
while(left <= right){
middle = left + (right - left) / 2;
if(arr[middle] < value){ // value在右邊
left = middle + 1;
} else if(arr[middle] === value){
return middle;
} else { // value在左邊
right = middle-1;
}
}
return -1;
}
陣列逆序
function reverse(array) {
let l = 0;
let r = array.length-1;
while(l != r){
swap(array, l++, r--);
}
}
相關文章
- 演算法基礎知識總結演算法
- CSS日常總結CSS
- 資料結構基礎和演算法題系列總結資料結構演算法
- 安全基礎總結
- VUE基礎總結Vue
- jQuery基礎總結jQuery
- 【Python】基礎總結Python
- MongoDB基礎總結MongoDB
- JavaScript基礎總結JavaScript
- 連結串列基礎總結
- 圖論(三)--各種基礎圖演算法總結圖論演算法
- 基礎路徑規劃演算法(Dijikstra、A*、D*)總結演算法
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- JavaScript基礎總結(二)JavaScript
- 最全Drawable基礎總結
- 最全JavaScript基礎總結JavaScript
- C++基礎總結C++
- 【多執行緒總結(一)-基礎總結】執行緒
- 日常生活總結表
- Java基礎知識總結Java
- React 基礎知識總結React
- 關於vue基礎總結Vue
- css佈局基礎總結CSS
- java集合框架基礎總結Java框架
- SpringIOC基礎知識總結Spring
- Vue.js基礎總結Vue.js
- android混淆總結(基礎版)Android
- Rust 基礎知識總結Rust
- NODE基礎總結(2) —— Module
- NODE基礎總結(1) —— EventloopOOP
- 9Java基礎總結Java
- 前端基礎 — Web事件總結前端Web事件
- 索引基礎知識總結索引
- 工作經驗日常總結===20241105
- 日常專案經驗總結
- Java基礎知識點總結Java
- spark 基礎開發 Tips總結Spark
- JS基礎知識深入總結JS