123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import random
- def makeset(lst):
- result = {}
- for a in lst:
- if not result.has_key(a):
- result[a] = []
- result[a].append(True)
- return result
- def sorttest(lst1):
- lst2 = lst1[:]
- lst2.sort()
- assert len(lst1) == len(lst2)
- assert makeset(lst1) == makeset(lst2)
- position = {}
- i = 0
- err = False
- for a in lst1:
- if not position.has_key(a):
- position[a] = []
- position[a].append(i)
- i += 1
- for i in range(len(lst2)-1):
- a, b = lst2[i], lst2[i+1]
- if not a <= b:
- print "resulting list is not sorted"
- err = True
- if a == b:
- if not position[a][0] < position[b][-1]:
- print "not stable"
- err = True
- if err:
- print lst1
- print lst2
- for v in range(137):
- up = 1 + int(v * random.random() * 2.7)
- lst1 = [random.randrange(0, up) for i in range(v)]
- sorttest(lst1)
- print "everything's fine"
|