在javascript中,常用算法是我們開發(fā)者必備的知識之一。算法的作用可以幫助我們解決各種復雜的問題。下面我將介紹一些常用算法并舉例說明其用法。
1. 階乘算法
階乘算法是計算階乘的一種方法,它的定義是n的階乘等于n乘以(n-1)乘以(n-2)……一直乘到1。通過使用遞歸函數(shù)可以求得n的階乘。
function factorial(n){ if(n == 0){ return 1; } else{ return n * factorial(n-1); } }
例如,我們想求5的階乘,使用factorial(5)即可。輸出結(jié)果為120。
2. 冒泡排序算法 冒泡排序算法是一種比較簡單的排序方法。它重復遍歷待排序的序列,每次遍歷比較相鄰的兩個元素,如果他們的順序不正確就交換位置。這樣一次遍歷會讓最大的元素沉到最底下,function bubbleSort(arr){ var len = arr.length; for(var i = 0; i < len-1; i++){ for(var j = 0; j < len-i-1; j++){ if(arr[j] > arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; }
例如,如果我們傳入一個數(shù)組[1, 5, 2, 11, 7],輸出結(jié)果就會是[1, 2, 5, 7, 11]。
3. 快速排序算法 快速排序算法是一種比較常用的排序算法,它的原理是選擇一個元素作為基準值,然后將比它小的放在它的左側(cè),比它大的放在它的右側(cè),然后再對基準值的左右兩部分分別重復這個操作。function quickSort(arr){ if(arr.length <= 1){ return arr; } var pivot = arr[0]; var left = []; var right = []; for(var i = 1; i < arr.length; i++){ if(arr[i] < pivot){ left.push(arr[i]); } else{ right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); }
例如,如果我們傳入一個數(shù)組[1, 5, 2, 11, 7],輸出結(jié)果就會是[1, 2, 5, 7, 11]。
4. 斐波那契數(shù)列算法 斐波那契數(shù)列指的是一個數(shù)列,該數(shù)列的前兩項為0和1,后面每一項都是前兩項之和。使用遞歸函數(shù)可以求得斐波那契數(shù)列的第n項。function fibonacci(n){ if(n == 0){ return 0; } if(n == 1 || n == 2){ return 1; } else{ return fibonacci(n - 1) + fibonacci(n - 2); } }
例如,我們想求斐波那契數(shù)列的第6項,使用fibonacci(6)即可。輸出結(jié)果為8。
以上就是javascript中常用的一些算法,除此之外還有很多算法可以使用。學習這些算法可以幫助我們更好地編寫高效的代碼。下一篇css顯示分辨率