77
88import sys
99import time
10- import random
10+ import whrandom
1111import marshal
1212import tempfile
1313import 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
102107def 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