- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
#if HAVE(MERGESORT)
if (isSortingPrimitiveValues)
qsort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
else
mergesort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#else
// FIXME: The qsort library function is likely to not be a stable sort.
// ECMAScript-262 does not specify a stable sort, but in practice, browsers perform a stable sort.
qsort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#endif
Из какой-то древней версии Webkit. Про устойчивость сортировки. Ну типа вот хоть в ECMAScript-262 нихрена не написано про то, что сортировка должна быть устойчивой, мы сделаем ее устойчивой потому что так принято (а то сломаем еще ненароком чей-то говнокод на JS)
вот еще
https://bugs.chromium.org/p/v8/issues/detail?id=90
https://habrahabr.ru/post/303748/
j123123 15.04.2017 19:28 # 0
doktor 15.04.2017 19:31 # −11
doktor 15.04.2017 19:36 # −12
dxd 16.04.2017 11:01 # 0
Psionic 16.04.2017 00:08 # 0
bormand 16.04.2017 00:20 # +1
Stable sort погугли.
Psionic 16.04.2017 00:38 # 0
barop 16.04.2017 00:39 # 0
достаточно вирта почитать "структуры и олгоритмы"
стыдно не читать!
barop 16.04.2017 00:30 # 0
как можно дожить до седых мудей и не знать что такое stable sort и не stable sort?
если у тебя есть foo и bar, и bar == foo, то стабильная сортировка никогда их не поменяет местами, а нестабильная -- может.
Например в жобе для сортировки примитивов используется нестабильная (потому что 2 и 2 можно менять местами скок угодно) а для объектов стабильная потому что если foo.equals(bar), то совсем не факт что это один и тот же объект
Psionic 16.04.2017 00:46 # 0
guestinio 16.04.2017 10:34 # 0
guestinh0 18.04.2017 16:14 # 0
guest 18.04.2017 17:32 # 0
j123123 18.04.2017 15:55 # +3
guestinh0 18.04.2017 16:16 # 0