JavaScript中的排序不稳定

当我在任何社交网络上看到有关类似主题的帖子时,下面几乎总是有很多此类评论:

  • 为什么需要知道是否有内置的排序方法?

  • 为什么要重新发明轮子?

  • 有必要通过面试,客观上不再需要知道

  • 在“任何JavaScript引擎”中,它们都不是愚蠢的,并且已经做好了一切

在我加入Rostelecom IT团队之一担任前端开发人员之前,我本人也一直以相同的方式思考。我们在一起遇到了一个非常有趣的案例:有必要创建一个小部件,该小部件可以内置到我们所有宏观区域分支机构的信息系统中,并简化运营商选择最佳费率的工作。

开门见山

您认为执行此代码后会发生什么?同时,没有必要知道。”

似乎没有什么奇怪的,但有细微差别。

案例次数

, , , unit-. - . . -, . , Node.js 10, , . , , . , — . , , , , .

. Node , Node, 11, . . Node 12, .

: Google Chrome 80 , 69 — . , . 

  • ,

  • Release notes Google Chrome 

  • , Google Chrome 69 — , 6- V8

  • Release notes V8

  • 6 7 V8

Getting things sorted in V8, , 7- V8 TimSort, QuickSort. , , - .

Node.js 10.22 ( V8 v6.8) QuickSort.​

​ , , 0.

Node.js 14.5 ( V8 v7.0) TimSort.​

​ .

? , JavaScript. Node.js , . 

, . BlockSort (wikisort). , , , , .

:

  • lodash.sortby

  • WikiSort javascript (WikiSort)

  • QuickSort V8 (node.js 10.22.0)

  • TimSort V8 (node.js 14.5.0)

10 , 100 . 

​ : , V8, WikiSort TimSort, . lodash

sort-test-js, — Tihon-Ustinov/sort-test-js

?

JavaScript

Node.js

11.0.0

2018-10-23

V8 7.0.276.28

+

Node.js

10.22.0

2020-07-21

V8 6.8.275.32

-

Google Chrome

70.0.3538

2018-10-16

V8 7.0.276

+

Google Chrome

69.0.3497

2018-09-04

V8 6.9.427

-

  • « JavaScript»,

  • ,

  • ,

  • , ,




All Articles