前端面试问题总结之---冒泡排序和斐波那契数列
冒泡排序(js实现):
- 冒泡排序(交换排序):数组里的每一个数跟它后面的数相比较;
1 var arr = [12,34,3,24,78,90,16,45], temp = 0; 2 for(var i=0; i<arr.length; i++) 3 { 4 for(var j=i+1; j<arr.length; j++) 5 { 6 if(arr[i] > arr[j]) 7 { 8 temp = arr[i]; 9 arr[i] = arr[j]; 10 arr[j] = temp; 11 } 12 } 13 } 14 for(var x in arr) 15 { 16 console.log(arr[x]); 17 }
- 冒泡排序(不断地交换,通过交换完成最终的排序):比较相邻的两个元素,若前者比后者大,则相互交换位置,依次下来n-1轮排序完成;
1 var arr = [12,34,3,24,78,90,16,45], temp = 0; 2 for(var i=0; i<arr.length; i++) 3 { 4 for(var j=arr.length-1; j>=i; j--) 5 { 6 if(arr[j] > arr[j+1]) 7 { 8 temp = arr[j]; 9 arr[j] = arr[j+1]; 10 arr[j+1] = temp; 11 } 12 } 13 } 14 for(var x in arr) 15 { 16 console.log(arr[x]); 17 }
斐波那契数列(js实现):
- 循环(普通版):
1 function Fib(n){ 2 if (n===1 || n===2) { 3 return 1; 4 } 5 let num1=1, num2=1; 6 for (let i=2; i<n; i++){ 7 [num1, num2] = [num2, num1+num2]; 8 } 9 return num2; 10 }
- 递归(普通版):
1 function Fib(n) 2 { 3 if(n<=1) 4 { 5 return 1; 6 }; 7 return Fib(n-1) + Fib(n-2); 8 }
-
递归(ES6之函数尾调用优化版):
1 function Fib(n, num1=1, num2=1) 2 { 3 if(n<=1) 4 { 5 return num2; 6 }; 7 return Fib(n-1, num2, num1+num2); 8 }

浙公网安备 33010602011771号