面试-算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试-算法相关的知识,希望对你有一定的参考价值。

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

 

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

 

以上是关于面试-算法的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

前端面试题之手写promise

片段(Java) | 机试题+算法思路+考点+代码解析 2023

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

代码面试最常用的10大算法