JavaScript数组常用排序方法

1、冒泡排序

遍历元素,跟其下一个元素对比
把最大的逐个往后排列

let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length-1; i++){
    for(let j = 0; j < arr.length-1; j++){
        if(arr[j] > arr[j+1]){
            var current = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = current
        }
    }
}

2、选择排序

把当前元素分别跟后面所有的元素对比
把最小的逐个往前排列

let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length; i++){
    for(let j = i+1; j < arr.length; j++){
        if(arr[i] > arr[j]){
            var current = arr[i]
            arr[i] = arr[j]
            arr[j] = current
        }
    }
}

3、快速排序

let arr = [5, 3, 6, 9, 2, 1, 8]
function fastSort(arr) {
    // 退出递归并
    if(arr.length <= 1) return arr
    // 找中间元素位置
    let index = parseInt(arr.length / 2) 
    // 拿出中间的元素,所有元素跟这个元素比较
    let brr = arr.splice(index, 1)
    // 小于的放一个数组
    let crr = []
    // 大于或者等于的放一个数组
    let drr = []
    for(let i = 0; i < arr.length; i++){
        if(arr[i] < brr[0]){
            crr.push(arr[i])
        }else{
            drr.push(arr[i])
        }
    }
    // 递归 合并排序好的数组
    return fastSort(crr).concat(brr, fastSort(drr))
}
fastSort(arr) 

4、sort()排序

let arr = [5, 3, 6, 9, 2, 1, 8]
arr.sort((a, b) => a - b)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 之前对排序算法理解不是很深刻,也容易把几个算法混在一起,所以整理了几个常用的排序算法,并尝试在自己的理解上给...
    nuclear阅读 374评论 0 2
  • 常见比较排序1.冒泡排序2.选择排序:简单选择排序和堆排序3.插入排序:直接插入排序和希尔排序4.快速排序5.归并...
    Adonia汪阅读 241评论 0 0
  • 学习一下几个日常的算法排序问题 1. 冒泡排序 实现:用for循环遍历数组元素,拿出前一个和后一个元素对比,如果前...
    mills_han阅读 4,779评论 1 2
  • 简介 原地排序:就是指空间复杂度为O(1)的排序算法。 稳定性:如果待排序的序列中存在值等的元素,经过排序之后,相...
    geeklyc阅读 419评论 0 0
  • 1 前言 2 排序基础2.1 选择排序2.2 插入排序 3 高级排序算法3.1 归并排序3.1.1 插入排序与归并...
    憩在河岸上的鱼丶阅读 469评论 0 2