def test_positive_and_negative_random(self): size = 100000 seq = [0] * size for i in range(size): seq[i] = randint(-100000, 100000) radix_sort(seq) self.assertTrue(self._check(seq))
def test_descending(self): size = 100000 seq = [randint(0, size)] * size for i in range(size): seq[i] = seq[i - 1] - randint(1, 10) radix_sort(seq) self.assertTrue(self._check(seq))
def test_repeating_ascending(self): size = 100000 seq = [0] * size for i in range(1, size): seq[i] = seq[i - 1] + randint(0, 4) radix_sort(seq) self.assertTrue(self._check(seq))
def grade(sort_func, array_generator, size): millis = 0.0 for i in range(5): array = array_generator(size) t1 = time() sort_func(array) t2 = time() millis += t2 - t1 millis /= 5.0 return millis funcs = dict() funcs["Combined sort"] = lambda x: merge_sort(x, 0, len(x)) funcs["Quick sort"] = lambda x: quicksort(x, 0, len(x)) funcs["Radix sort"] = lambda x: radix_sort(x) funcs["Standard sort"] = sorted arrs = dict() arrs["Random array (-1000000 to 1000000)"] = lambda x: random_array(-1000000, 1000001, x) arrs["Random array (0 to 10000)"] = lambda x: random_array(0, 10001, x) arrs["Semi-sorted array (0 to 10000)"] = lambda x: semi_sorted_array(0, 10001, x) arrs["Ascending sorted array (0 to 10000)"] = lambda x: ascending_sorted_array(0, 10001, x) arrs["Descending sorted array (0 to 10000)"] = lambda x: descending_sorted_array(0, 10001, x) arrs["Array of repeating values"] = lambda x: same_value_array(-100000, 100001, x) sizes = [100 + 100000 * i for i in range(6)] current = 1 for gen_name, gen in arrs.items():
def test_empty(self): seq = [] res = radix_sort(seq) expected = [] self.assertEqual(expected, res)
def test_trivial(self): seq = [1, 333, 22] res = radix_sort(seq) expected = [1, 22, 333] self.assertEqual(expected, res)