其实算法方面在前端的实际项目中涉及得并不多,但还是需要精通一些基础性的算法,一些公司还是会有这方面的需求和考核,建议大家还是需要稍微准备下,这属于加分题。
1. 五大算法
- 贪心算法: 局部最优解法
- 分治算法: 分成多个小模块,与原问题性质相同
- 动态规划: 每个状态都是过去历史的一个总结
- 回溯法: 发现原先选择不优时,退回重新选择
- 分支限界法
2. 基础排序算法
- function bubleSort(arr) {
- var len = arr.length;
- for (let outer = len ; outer >= 2; outer--) {
- for(let inner = 0; inner <=outer - 1; inner++) {
- if(arr[inner] > arr[inner + 1]) {
- [arr[inner],arr[inner+1]] = [arr[inner+1],arr[inner]]
- }
- }
- }
- return arr;
- }
- 选择排序: 遍历自身以后的元素,最小的元素跟自己调换位置
- function selectSort(arr) {
- var len = arr.length;
- for(let i = 0 ;i < len - 1; i++) {
- for(let j = i ; j<len; j++) {
- if(arr[j] < arr[i]) {
- [arr[i],arr[j]] = [arr[j],arr[i]];
- }
- }
- }
- return arr
- }
- function insertSort(arr) {
- for(let i = 1; i < arr.length; i++) { //外循环从1开始,默认arr[0]是有序段
- for(let j = i; j > 0; j--) { //j = i,将arr[j]依次插入有序段中
- if(arr[j] < arr[j-1]) {
- [arr[j],arr[j-1]] = [arr[j-1],arr[j]];
- } else {
- break;
- }
- }
- }
- return arr;
- }
3. 高级排序算法
|