前言

排序是编程中很基础却很有学问的算法。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文主要阐述前端面试中最常问的三种排序:冒泡排序、选择排序,其他排序方法详情点我。
*本文参考链接点我。


冒泡排序

算法描述:

  1. 比较相邻的元素。如果前一个比后一个大,就交换他们两个,这样循环到最后,最后一位数将是最大的数。
  2. 最后一个数确定了后不再进行比较,重复步骤1,不断确定新一轮最大的数值后将其固定不比较,最后所有数据比较完则完成排序。

动图演示:

代码实现:

function bubbleSort(arr) {       for (var i = 0; i < arr.length - 1; i++) {           for (var j = 0; j < arr.length - 1 - i; j++) {               if (arr[j] > arr[j+1]) {        // 相邻元素两两对比                   var temp = arr[j+1];        // 元素交换                   arr[j+1] = arr[j];                   arr[j] = temp;               }           }       }       return arr;   }

选择排序

算法描述:每次都找一个最大或者最小的排在开始即可。例如,你想从小到大排列,就找出最大的放第一位,通过循环不断找出当时最大值并插入第一位,最后就会从小到大排列了。

动图演示:

代码实现:

function selectionSort(arr) {          var minIndex, temp;                                                   for (var i = 0; i < arr.length - 1; i++) {           minIndex = i;           for (var j = i + 1; j < arr.length ; j++) {               if (arr[j] < arr[minIndex]) {     // 寻找最小的数                   minIndex = j;                 // 将最小数的索引保存               }           }           temp = arr[i];           arr[i] = arr[minIndex];           arr[minIndex] = temp;       }       return arr;   }