前端算法面试题整理

179 阅读2分钟

这里推荐一个排序算法的动画网站,应该是一个国外团队做的,Sorting Algorithms

冒泡算法排序

出现频率

掌握难度

作用

参考答案

    // 冒泡排序
    /* 1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。

   2.第一轮的时候最后一个元素应该是最大的一个。

   3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。 */
    function bubbleSort(arr) {
      for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length; j++) {
          if (arr[j] > arr[j + 1]) {
            var temp = arr[j]
            arr[j] = arr[j + 1]
            arr[j + 1] = temp
          }
        }
      }
    }

    var Arr = [3, 5, 74, 64, 64, 3, 1, 8, 3, 49, 16, 161, 9, 4]
    console.log(Arr, "before");
    bubbleSort(Arr)
    console.log(Arr, "after");

实际使用场景

快速排序

出现频率

掌握难度

作用

参考答案

/*
快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。
然后递归调用,在两边都实行快速排序。  
*/

function quickSort(arr) {
  if (arr.length <= 1) {
    return arr
  }
  var middle = Math.floor(arr.length / 2)
  var middleData = arr.splice(middle, 1)[0]

  var left = []
  var right = []
  
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] < middleData) {
      left.push(arr[i])
    } else {
      right.push(arr[i])
    }
  }

  return quickSort(left).concat([middleData], quickSort(right))
}

var Arr = [3, 5, 74, 64, 64, 3, 1, 8, 3, 49, 16, 161, 9, 4]
console.log(Arr, "before");
var newArr = quickSort(Arr)
console.log(newArr, "after");

实际使用场景

插入排序

出现频率

掌握难度

作用

参考答案

function insertSort(arr) {
  // 默认第一个排好序了
  for (var i = 1; i < arr.length; i++) {
    // 如果后面的小于前面的直接把后面的插到前边正确的位置
    if (arr[i] < arr[i - 1]) {
      var el = arr[i]
      arr[i] = arr[i - 1]
      var j = i - 1
      while (j >= 0 && arr[j] > el) {
        arr[j+1] = arr[j]
        j--
      }
      arr[j+1] = el
    }
  }
}

var Arr = [3, 5, 74, 64, 64, 3, 1, 8, 3, 49, 16, 161, 9, 4]
console.log(Arr, "before");
insertSort(Arr)
console.log(Arr, "after");

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景

****

出现频率

掌握难度

作用

参考答案

实际使用场景