blueloveTH 2025-04-18 10:48:18 +08:00
parent 30abdf652c
commit ccb0c8cd1c
3 changed files with 10 additions and 4 deletions

View File

@ -12,10 +12,10 @@ static bool _stable_sort_merge(char* a,
int (*f_lt)(const void* a, const void* b, void* extra),
void* extra) {
while(a < a_end && b < b_end) {
int res = f_lt(a, b, extra);
int res = f_lt(b, a, extra);
// check error
if(res == -1) return false;
if(res) {
if(res == 0) { // !(b<a) -> (a>=b)
memcpy(r, a, elem_size);
a += elem_size;
} else {

View File

@ -88,7 +88,7 @@ assert list(range(5, 1, -2)) == [5, 3]
# test sort
a = [8, 2, 4, 2, 9]
assert a.sort() == None
assert a == [2, 2, 4, 8, 9]
assert (a == [2, 2, 4, 8, 9]), a
a = []
assert a.sort() == None

View File

@ -142,4 +142,10 @@ assert a.__new__ == list.__new__
class A:
x: list[int] = [i for i in range(1, 4)]
assert A.x == [1, 2, 3]
assert A.x == [1, 2, 3]
# stable sort
a = [(0, 1), (1, 1), (1, 2)]
b = sorted(a, key=lambda x: x[0])
if b != [(0, 1), (1, 1), (1, 2)]:
assert False, b