前端之多种排序方式

43次阅读

共计 761 个字符,预计需要花费 2 分钟才能阅读完成。

前言

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


冒泡排序

算法描述:

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

正文完
 0