Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 16653cb

Browse files
committed
Add Tim's worst case scenario.
Revert to using whrandom so it will work with older versions of Python.
1 parent 7462942 commit 16653cb

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

Lib/test/sortperf.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import sys
99
import time
10-
import random
10+
import whrandom
1111
import marshal
1212
import tempfile
1313
import operator
@@ -23,7 +23,7 @@ def randrange(n):
2323
except IOError:
2424
result = []
2525
for i in range(n):
26-
result.append(random.random())
26+
result.append(whrandom.random())
2727
try:
2828
try:
2929
fp = open(fn, "wb")
@@ -44,7 +44,7 @@ def randrange(n):
4444
##assert len(result) == n
4545
# Shuffle it a bit...
4646
for i in range(10):
47-
i = random.randint(0, n-1)
47+
i = whrandom.randint(0, n-1)
4848
temp = result[:i]
4949
del result[:i]
5050
temp.reverse()
@@ -75,10 +75,12 @@ def tabulate(r):
7575
/sort: ascending data
7676
~sort: many duplicates
7777
-sort: all equal
78+
!sort: worst case scenario
7879
7980
"""
80-
fmt = ("%2s %6s" + " %6s"*5)
81-
print fmt % ("i", "2**i", "*sort", "\\sort", "/sort", "~sort", "-sort")
81+
cases = ("*sort", "\\sort", "/sort", "~sort", "-sort", "!sort")
82+
fmt = ("%2s %6s" + " %6s"*len(cases))
83+
print fmt % (("i", "2**i") + cases)
8284
for i in r:
8385
n = 1<<i
8486
L = randrange(n)
@@ -97,6 +99,9 @@ def tabulate(r):
9799
del L
98100
L = map(abs, [-0.5]*n)
99101
doit(L) # -sort
102+
L = range(n/2-1, -1, -1)
103+
L[len(L):] = range(n/2)
104+
doit(L) # !sort
100105
print
101106

102107
def main():
@@ -129,7 +134,7 @@ def main():
129134
y = (y^h^d) & 255
130135
h = h>>8
131136
z = (z^h^d) & 255
132-
random.seed(x, y, z)
137+
whrandom.seed(x, y, z)
133138
r = range(k1, k2+1) # include the end point
134139
tabulate(r)
135140

0 commit comments

Comments
 (0)