首页 > 代码库 > 面试-算法

面试-算法

现在很多公司面试的时候会要求做一些算法题,写一下我面试时遇到的算法题

 

1.泡沫排序

              原理:以升序为例,拿数组中的元素进行两两比较,较大的会放到后面,第一轮会找出最大的元素放到最后,然后进行arr.length-1次,把所有的元素全部排序完成

 1         // 泡沫排序 升序
 2         function pup(arr){
 3              // 共需要arr.length-1轮比较
 4             for(var i=0;i<arr.length-1;i++){
 5                 // 进行两两比较
 6                 for(j=0;j<arr.length;j++){
 7                     if(arr[j] > arr[j+1] ){
 8                      // 调换位置
 9                         var temp = arr[j];
10                         arr[j] = arr[j+1];
11                         arr[j+1]= temp;
12                     }
13                 }
14             }
15             return arr;
16         }
17 
18         var arr1 = [1,34,5,33,3,32 ]
19         console.log(pup(arr1))  // Arrar(6)   1,3,5,32,33,34    

2.插入排序

             原理:根据已经排好的数组,插入到指定的位置。以升序为例,将要插入的元素和数组中的第一个元素开始比较,直到要插入的元素小于数组中的元素,把它插到这个元素的前面

 1         // 插入排序
 2         function insertSort(arr,x){
 3             for(var i=0;i<arr.length;i++){
 4                 if(arr[i]>x){
 5                     arr.splice(i,0,x) //插入
 6                     break; // 跳出循环
 7                 }
 8             }
 9             return arr
10         }
11 
12         var arr2 = [1,3,5,7,788]
13 
14         document.write(insertSort(arr2,4))  // 1,3,4,5,7,788

3.在一个公司面试时遇到让数组中的偶数项相加

 1         // 数组中偶数项相加
 2         function odd(arr){
 3             var res = 0;
 4             for(var i=0;i<arr.length;i++){
 5                 if(i%2 !== 0){
 6                     res += arr[i]
 7                 }
 8             }
 9             return res;
10         }
11 
12         var arr3 = [3,4,5,67,78,8,3]
13         document.write(odd(arr3))   // 79

 

面试-算法