总结 JS 中数组排序的常见方法:

这篇文章是对于 JS 中 数组排序 的常见方法的一个总结 :


前置知识 :

排序大的分类可以分为两种:内排序 和  外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。

内排序有可以分为以下几类:

  1. 插入排序:直接插入排序、二分法插入排序、希尔排序。
  2. 选择排序:直接选择排序、堆排序。
  3. 交换排序:冒泡排序快速排序
  4. 归并排序
  5. 基数排序

稳定性

  1. 稳定:归并排序、冒泡排序、插入排序,基数排序。
  2. 不稳定:选择排序、快速排序、希尔排序、堆排序。

时间复杂度

最基础的四个算法:冒泡、选择、插入、快排 中,快排的 时间复杂度 最小 O(n*log2n),其他都是O(n2)

排序在 JS 中 :(基础的四个算法:冒泡、选择、插入、快排)


  • sort 方法 (a-b正向    b-a 反向)

内部原理:冒泡排序。

JavaScript中数组的 sort() 方法主要用于对数组的元素进行排序。其中,sort()方法有一个可选参数。但是,此参数必须是函数。 数组在调用 sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字。

let arr=[3,1,5,8,28]
//正向 a-b
var arr1=arr.sort(function  (a,b) {
return a-b;
})
console.log(arr1) //[1,3,5,8,28];

//反向 b-a
var arr2=arr.sort(function  (a,b) {
return b-a;
})
console.log(arr2) //[28,8,5,3,1]
  • 冒泡排序 

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。

function sortArr(arr){
    for(let i=0; i arr[j+1]){
                let temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
  • 快速排序 (一拆为二)

首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,然后对左右部分递归。

function quickSort(arr){
    //如果数组长度小于等于1,则返回数组本身
    if(arr.length<=1){
        return arr;
    }
    //定义中间值的索引
    var index = Math.floor(arr.length/2);
    //取到中间值
    var center = arr.splice(index,1);
    //定义左右部分数组
    var left = [];
    var right = [];
    for(var i=0;i
  • 选择排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

function selectSort(arr){
    for(var i=0;iarr[j]){
                min = arr[j];
                minIndex = j;
            }
        }
        //将最小值插入
        arr.splice(i,0,min);
        //将原来位置的最小值删除
        arr.splice(minIndex+1,1);
    }
}
  • 插入排序 

假设第 0 元素是有序序列,第 1 元素之后是无序的序列。从第 1 元素开始依次将无序序列的元素插入到有序序列中。

function insertSort(arr){
//假设第0元素是有序序列,第1元素之后是无序的序列。从第1元素开始依次将无序序列的元素插入到有序序列中
    for(var i=1; i=0&&temp

这里只是简单的总结了下自己常用的几种,如果想了解更多,请参考下方链接:

https://blog.csdn.net/weixin_41725746/article/details/93080926

总结 JS 中数组排序的常见方法:_第1张图片

 

你可能感兴趣的:(JavaScript,JS数据结构和算法)