diff --git a/benchmarks/sort.py b/benchmarks/sort.py index 13fe354c..0a993968 100644 --- a/benchmarks/sort.py +++ b/benchmarks/sort.py @@ -2,27 +2,19 @@ import random a = [random.randint(-100000, 100000) for i in range(100000)] -def __qsort(a: list, i: int, j: int): - if i>=j: - return - d1, d2 = i, j - mid = (i+j) // 2 - a[mid], a[i] = a[i], a[mid] - u = a[i]; - while iu: - j -= 1 - if i= R: return; + mid = a[(R+L)//2]; + i, j = L, R + while i<=j: + while a[i]mid: j-=1 + if i<=j: + a[i], a[j] = a[j], a[i] + i+=1 + j-=1 + __qsort(a, L, j) + __qsort(a, i, R) from dis import dis # dis(__qsort) diff --git a/src/builtins.h b/src/builtins.h index 01115f9d..0dde0346 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -116,27 +116,19 @@ tuple.__repr__ = lambda self: '(' + ', '.join([repr(i) for i in self]) + ')' list.__json__ = lambda self: '[' + ', '.join([i.__json__() for i in self]) + ']' tuple.__json__ = lambda self: '[' + ', '.join([i.__json__() for i in self]) + ']' -def __qsort(a: list, i: int, j: int): - if i>=j: - return - d1, d2 = i, j - mid = (i+j) // 2 - a[mid], a[i] = a[i], a[mid] - u = a[i]; - while iu: - j -= 1 - if i= R: return; + mid = a[(R+L)//2]; + i, j = L, R + while i<=j: + while a[i]mid: j-=1 + if i<=j: + a[i], a[j] = a[j], a[i] + i+=1 + j-=1 + __qsort(a, L, j) + __qsort(a, i, R) def __list4sort(self, reverse=False): __qsort(self, 0, len(self)-1)