演算法是程式的靈魂,乙個優秀的前端工程師對演算法也是要有所了解的。
排序演算法
1. 氣泡排序
//氣泡排序
function
bubblesort(arr)}}
}
2. 快速排序
//快速排序
function
quicksort(arr,l,r)
arr[i] =x;
quicksort(arr, l, i-1);
quicksort(arr, i+1, r);
}}
3. 二路歸併
將兩個按值有序序列合併成乙個按值有序序列,則稱之為二路歸併排序
functionmerge(left, right)
else
}while
(left[il])
while
(right[ir])
return
result;
}
字串操作
1. 判斷回文字串
functionpalindrome(str)
2. 翻轉字串
思路1:反向遍歷字串
functionreversestring(str)
思路2:轉化成array操作
functionreversestring2(str)
return arr.join("");
}
3. 生成指定長度的隨機字串
配合模糊等效果可以生成驗證碼
functionrandomstring(n)
4. 統計字串中次數最多的字母
利用object中key的唯一性,利用key來進行篩選,然後計數
functionfindmaxduplicatechar(str)
var charobj ={};
for(var i = 0; i < str.length; i++)
else
}var maxchar = '',
maxvalue = 1;
for(var k in
charobj)
}return maxchar + ':' +maxvalue;
}
陣列操作
1. 陣列去重
利用object中的key的唯一性,利用key來進行篩選
functionunique(arr)
var data =
for(var i in
arr)
}return
data;
}
2. number陣列中最大差值
functiongetmaxprofit(arr)
return max -min;
}
其他常見演算法
1. 階乘
//1. 非遞迴實現
function
factorialize(num)
//2. 遞迴實現
function
factorialize(num)
}
2. 生成斐波那契數列
斐波拉契:又稱**分割數列,值得是乙個數列:0、1、2、3、5、8、13、21、34....,在數學上,斐波拉契數列主要考察遞迴的呼叫。
2.1 強行遞迴實現
functiongetfib(n)
}function
fibo(len)
2.2 簡約非遞迴實現
functiongetfibonacci(n)
else
i++;
}return
fibarr;
}
3. 二分查詢
二分查詢:是在有序陣列中用的比較頻繁的一種演算法,優點是比較次數少,查詢速度快、平均效能好;缺點是要求待查表為有序,且插入刪除困難
3.1 非遞迴實現
functionbinary_search(arr, key)
else
if(key >arr[mid])
else
if(key }
return -1;
};
3.2 遞迴實現
functionbinary_search2(arr, low, high, key)
前端常見演算法JS實現
演算法是程式的靈魂,乙個優秀的前端工程師對演算法也是要有所了解的。排序演算法 1.氣泡排序 氣泡排序 function bubblesort arr 2.快速排序 快速排序 function quicksort arr,l,r else while left il while right ir re...
前端常見演算法 js
不管是在實際專案中還是在面試的時候我們大都會碰到演算法問題,比如排序啊,比較大小啊之類的這些最基本的演算法。我總結了一些,以後在碰到在慢慢補充。1.排序問題 1.1氣泡排序 氣泡排序演算法就是依次比較大小,小的的大的進行位置上的交換。var example 8 95,34 21,53 12 func...
常見排序演算法 JS實現
氣泡排序 bubblesort 每輪排序選出乙個最小或最大的元素再乙個個插入陣列 選擇排序 selectionsort this swap min,i 從未排序元素中挑出乙個元素挨個跟區域性有序的元素進行比較,找到對應位置插入即可 插入排序 insertsort this array j temp ...