问答详情
源自:7-22 数组排序sort()

sort(sortMethod);原理

看了很多人的回答,千篇一律无从理解,自己研究了一下算法原理终于明白了。

  1. 首先sort函数会将myArray[0],myArray[1],赋值给a,b

  2. 然后sortMethod函数会进行a,b的整数数值比较(假设我们需要的是升序即a-b),且return a-b;

  3. sort函数根据sorMethod返回的值 -1,0,1,分别将a放在b的前、不动、后,三个位置。

  4. a值不变,b值分别为myArray[2],myArray[3]……myArray[myArray.length-1],每一次都进行上述三个步骤。

  5. a被分别赋值数组中的每个元素,进行上述四个步骤。

提问者:qq_慕瓜5327221 2020-02-18 23:53

个回答

  • weixin_慕桂英4205805
    2020-10-09 20:20:21

    有说-1就调换吗,1就调换吗,有说会自动载入函数吗,啊?


  • 金刚无敌葫芦娃
    2020-03-17 13:34:23

    显示不出来啊

    标准库sort():函数并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归。一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外负荷,便会改用插入排序。而如果递归层次过深,有出现最坏情况的倾向,还会改用堆排序。

  • 朦胧5
    2020-02-21 14:40:35


    个人理解:

    return 1      说明 a - b>0  ;a要放在b的后面

    return  -1    说明 a-b <0   ; a要放在b的前面

    return  0     说明  a- b  = 0  ;   a和b的值相等,两者不发生调换