目前互联网行业目前正在处于内卷状态,各个大厂不断提高招人门槛,前端工程师找工作也越发艰难,为了助力各位老铁能够在面试过程中脱颖而出,我结合自己的面试经验,准备了这三十六道面试过程中的手撕算法题,与各位共享。 一、冒泡排序 冒泡排序的思路:遍历数组,然后将最大数沉到最底部; 时间复杂度:O(N^2); 空间复杂度:O(1) function BubbleSort ( arr ) { if (arr == null || arr.length <= 0 ){ return []; } var len = arr.length; for ( var end = len - 1 ; end > 0 ; end--){ for ( var i = 0 ; i < end; i++) { if (arr[i] > arr[i + 1 ]){ swap(arr, i, i + 1 ); } } } return arr; } function swap ( arr, i, j ) { // var temp = arr[i]; // arr[i] = arr[j]; // arr[j] = temp; //交换也可以用异或运算符 arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; } 二