使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果
答案:
sort()函数是js内置的一个数组排序函数。默认可以接收一个函数,返回值是比较两个数的相对顺序的值。sort()方法用原地算法对数组的元素进行排序, 并返回数组
1、如果没有默认函数:是按照 UTF-16 排序的,对于字母数字 你可以利用 ASCII 进行记忆
[3, 15, 8, 29, 102, 22].sort();
// [102, 15, 22, 29, 3, 8]
2、带函数的比较
[3, 15, 8, 29, 102, 22].sort((a,b) => (a - b));
// [3, 8, 15, 22, 29, 102]
-
返回值大于0 即a-b > 0 , a 和 b 交换位置
-
返回值大于0 即a-b < 0 , a 和 b 位置不变
-
返回值等于0 即a-b = 0 , a 和 b 位置不变
[3, 15, 8, 29, 102, 22].sort((a,b) => (b - a));
// [102, 29, 22, 15, 8, 3]
深入浅出
Google Chrome 对 sort 做了特殊处理,对于长度 <= 10 的数组使用的是插入排序(稳定排序算法) ,>10 的数组使用的是快速排序。快速排序是不稳定的排序算法。
常用的时间复杂度所耗费的时间从小到大依次是
O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2^n) < O(n!) < O(n^n)