下面就簡單列舉一下javascript中常見的一些算法,需要的朋友可以做一下參考。當然這些算法不僅僅適用于javascript,同樣也適用于其他語言。
一.線性查找:
比較簡單,屬于入門級的算法
//A為數組,x為要搜索的值function linearSearch(A, x) {for (var index = 0; index < A.length; index++) {if (A[index] == x) {return index;}}return -1;}二.二分查找:
又稱折半查找,適用于已排好序的線性結構。
//A為已按"升序排列"的數組,x為要查詢的元素//返回目標元素的下標function binarySearch(A, x) {var low = 0, high = A.length - 1;while (low <= high) {var mid = Math.floor((low + high) / 2); //下取整 if (x == A[mid]) {return mid;}if (x < A[mid]) {high = mid - 1;}else {low = mid + 1;}}return -1;}三.冒泡排序:
//冒泡排序function bubbleSort(A) {for (var i = 0; i < A.length; i++) {var sorted = true;//注意:內循環是倒著來的for (var j = A.length - 1; j > i; j--) {if (A[j] < A[j - 1]) {swap(A, j, j - 1);sorted = false;}}if (sorted) {return;}}}四.插入排序:
//插入排序//假定當前元素之前的元素已經排好序,先把自己的位置空出來,//然后前面比自己大的元素依次向后移,直到空出一個"坑",//然后把目標元素插入"坑"中function insertSort(A) {for (var index= 1; index< A.length; index++) {var x = A[index];for (var j = index- 1; j >= 0 && A[j] > x; j--) {A[j + 1] = A[j];}if (A[j + 1] != x) {A[j + 1] = x;println(A);}}return A;}五.字符串反轉:
//字符串反轉(比如:ABC -> CBA)function inverse(s) {var arr = s.split('');var index= 0, j = arr.length - 1;while (index< j) {var t = arr[index];arr[index] = arr[j];arr[j] = t;index++;j--;}return arr.join('');}以上內容給大家簡單介紹了JavaScrip常見的算法總結,希望本文能夠給大家帶來幫助。
新聞熱點
疑難解答