1

前言

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


冒泡排序

算法描述:

  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;   
}

Caddo
59 声望4 粉丝