现在很多公司面试的时候会要求做一些算法题,写一下我面试时遇到的算法题
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
时间: 2024-09-29 19:40:43