前端面试问题总结之---冒泡排序和斐波那契数列

冒泡排序(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 }

 

posted @ 2019-03-29 14:30  连城无忧  阅读(443)  评论(0)    收藏  举报