Use insertion sort for references in Array#sort (#90)

This fixes that Weak Heap Sort isn't stable and thus might swap equal values, which sometimes results in not deep equal arrays of strings, for example. Insertion sort is stable, so it is used for references instead.
This commit is contained in:
Max Graey
2018-05-02 20:33:17 +03:00
committed by Daniel Wirtz
parent 8b5d1d7f74
commit 99bde3a5fa
5 changed files with 240 additions and 1901 deletions

View File

@ -672,8 +672,8 @@ assertSorted<Proxy<i32>>(reversedElements512, (a: Proxy<i32>, b: Proxy<i32>): i3
// Test sorting strings
var randomStringsActual: string[] = ['a', 'b', 'a', 'ab', 'ba', '', null];
var randomStringsExpected: string[] = ['', 'a', 'a', 'ab', 'b', 'ba', null];
var randomStringsActual: string[] = ["a", "b", "a", "ab", "ba", "", null];
var randomStringsExpected: string[] = ["", "a", "a", "ab", "b", "ba", null];
assertSorted<string>(randomStringsActual, (a: string, b: string): i32 => <i32>(a > b) - <i32>(a < b));
assert(isArraysEqual<string>(randomStringsActual, randomStringsExpected));