代码
1 | function upsetArray(arr) { |
分析
- sort 是对数组进行排序,V8 引擎 sort 函数只给出了两种排序 InsertionSort 和 QuickSort,数量小于10的数组使用 InsertionSort,比10大的数组则使用 QuickSort。
- 它的是这样工作的:每次从数组里面挑选两个数进行运算,如果传入的参数是0 两个数位置不变;如果参数大于0 就交换位置;如果参数小于0就不交换位置;接下来用刚才的较大数字跟下一个进行比较,这样循环进行排序。
- 恰好,我们利用了这一点使用了
0.5 - Math.random
这个运算的结果要么是大于0,要么是小于0。这样要么交换位置,要么不交换位置,当然大于或者小于0是随即出现的,所以数组就被随机排序了。