def testRandom(self): import math for x in xrange(1000): unsorted = [ int(math.floor(random.random() * 100)) for _ in xrange(20) ] qsort(unsorted, 0, len(unsorted) - 1) for i in xrange(19): self.assertLessEqual(unsorted[i], unsorted[i + 1])
def run_tests(): import numpy as np for L in map(np.array, [[], [1.], [1.]*10]): old = L.copy() qsort(L) assert np.all(old == L) for n in np.r_[np.arange(2, 10),11,101,100,1000]: L = np.random.random(int(n)) old = sorted(L.copy()) t = float("+inf") for _ in xrange(10): np.random.shuffle(L) t = min(measure_qsort(L), t) assert np.allclose(old, L), L report_time(n, t) for n in np.r_[1e4,1e5,1e6]: t = float("+inf") for _ in range(3): t = min(measure_qsort(np.random.random_sample(n)), t) report_time(n, t)
def test_qsort_empty_list(self): list = [] sorted_list = qsort(list) self.assertEqual([], sorted_list)
def test_qsort_many_elems(self): list = [2, 48, 2, 59, 127, 10, -28, 26, 32] sorted_list = qsort(list) self.assertEqual([-28, 2, 2, 10, 26, 32, 48, 59, 127], sorted_list)
def test_qsort_reverse_sorted_elems(self): list = [6, 5, 4, 3, 2, 1] sorted_list = qsort(list) self.assertEqual([1, 2, 3, 4, 5, 6], sorted_list)
def test_qsort_sorted_elems(self): list = [1, 2, 3, 4, 5, 6, 7] sorted_list = qsort(list) self.assertEqual([1, 2, 3, 4, 5, 6, 7], sorted_list)
def test_qsort_same_elems(self): list = [2, 2, 2, 2, 2] sorted_list = qsort(list) self.assertEqual([2, 2, 2, 2, 2], sorted_list)
def test_qsort_doubleton2(self): list = [-2, -3] sorted_list = qsort(list) self.assertEqual([-3, -2], sorted_list)
def test_qsort_doubleton1(self): list = [10, 11] sorted_list = qsort(list) self.assertEqual([10, 11], sorted_list)
def test_qsort_singleton(self): list = [1] sorted_list = qsort(list) self.assertEqual([1], sorted_list)
from quicksort import qsort arr = [2,1,3,7,4,5,14,27,11] sorted_arr = qsort(arr) max = sorted_arr.pop() print("The maximum value in the list is {}".format(max))
def test_valid_values_with_mid_pivot(self): data = self.gen_data(8) for d in data: qsort(d, choose_pivot=_mid_pivot) self.assertEqual(d, sorted(d))
def test_valid_values_with_default_rand_pivot(self): data = self.gen_data(8) for d in data: qsort(d) self.assertEqual(d, sorted(d))
def test_bad_values(self): bad_data = ((None, None), (1, None), ('abc', None)) for arg, expected in bad_data: with self.assertRaises(ValueError): self.assertEqual(qsort(arg), expected)
def testNull(self): a = [] qsort(a, 0, len(a) - 1) self.assertEqual(a, [])
def testSame(self): a = [1, 1, 1] qsort(a, 0, len(a) - 1) self.assertEqual(a, [1, 1, 1])