18 lines
721 B
Plaintext
18 lines
721 B
Plaintext
# According to section 21.18 of the reference manual, Sort is not stable (it's a Shell sort).
|
|
# However, SortingPerm is stable. We will see it on an example, showing indexes of elements after the sort.
|
|
|
|
n := 20;
|
|
L := List([1 .. n], i -> Random("AB"));
|
|
# "AABABBBABBABAABABBAB"
|
|
|
|
|
|
p := SortingPerm(L);
|
|
# (3,10,15,17,18,19,9,14,7,13,6,12,16,8,4)(5,11)
|
|
|
|
a := Permuted(L, p);;
|
|
b := Permuted([1 .. n], p);;
|
|
|
|
PrintArray(TransposedMat(List([1 .. n], i -> [a[i], b[i]])));
|
|
# [ [ 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B' ],
|
|
# [ 1, 2, 4, 8, 11, 13, 14, 16, 19, 3, 5, 6, 7, 9, 10, 12, 15, 17, 18, 20 ] ]
|