首页 理论教育使用sort函数对数组排序的方法及稳定性

使用sort函数对数组排序的方法及稳定性

【摘要】:调用sort()函数但没有传递callback参数时,根据数字大小或字符串的Unicode编码对元素排序。动手写9.4.13执行9.4.13.html,输出结果到网页,如下图所示。图9.4.13使用sort()对数组排序排序稳定性是指数组每次排序的结果都一样。提示如果sort()函数使用的比较函数callback()是稳定的,那么在排序前后,数组内多个相等的元素相互之间的相对位置不会改变。

JavaScript提供了基于In-place算法的排序方法sort(callback),callback接收两个参数,格式如下:

参数a、b表示数组的两个元素,sort()将按照一定顺序使用两个数组元素作为参数调用callback回调,再根据callback的返回值(-1、0、1)调整元素a、b在数组中的位置。

callback(a,b)的返回值含义如下:

◇ -1(小于0的数),表示a位于b的前面,如果不是这个顺序,会交换a、b的位置。

◇ 1(大于0的数),表示a位于b的后面,如果不是这个顺序,会交换a、b的位置。

◇ 0,表示a、b的位置不需要交换。

调用sort()函数但没有传递callback参数时,根据数字大小或字符串的Unicode编码对元素排序。

9.4.13.html使用sort()对数组排序,如下所示。

动手写9.4.13

(www.chuimin.cn)

执行9.4.13.html,输出结果到网页,如下图所示。

图9.4.13 使用sort()对数组排序

排序稳定性是指数组每次排序的结果都一样。JavaScript的sort()函数不要求排序是稳定的,sort()的稳定性取决于callback():

◇ 如果callback(a,b)是稳定的,即a、b比较结果稳定,则sort()是稳定的。

◇ 如果callback(a,b)不是稳定的,即a、b比较结果会变动,则sort()是不稳定的。

提示

如果sort()函数使用的比较函数callback()是稳定的,那么在排序前后,数组内多个相等的元素相互之间的相对位置不会改变。