def run_single_test(algorithm, list_type, list_size):
    sort_list = get_list(list_type, list_size)

    pr = cProfile.Profile()
    pr.enable()
    if algorithm == "merge_sort":
        mergesort.merge_sort(sort_list, 0, len(sort_list) - 1)
    elif algorithm == "quicksort":
        quicksort.quick_sort(sort_list, 0, len(sort_list) - 1)
    elif algorithm == "revised_quicksort":
        revised_quicksort.revised_quick_sort(sort_list, 0,
                                             len(sort_list) - 1, 50)
    elif algorithm == "shell_sort":
        shellsort.shell_sort(sort_list, get_shellsort_gaps(list_size))

    pr.disable()

    s = io.StringIO()
    ps = pstats.Stats(pr, stream=s).sort_stats("cumulative")
    ps.strip_dirs().print_stats()

    results = s.getvalue()
    for line in results.splitlines():
        if "_sort)" in line:
            print(line)
            split_line = line.split()
            return (split_line[4])
Exemple #2
0
 def check_empty_list(self):
     test_list = []
     try:
         shell_sort(test_list)
     except ValueError:
         pass
     else:
         raise BaseException
Exemple #3
0
 def check_set_to_sort(self):
     test_data = {1, 4, 6, 3, 5, 7, 3}
     try:
         shell_sort(test_data)
     except TypeError:
         pass
     else:
         raise BaseException
Exemple #4
0
 def check_dict_to_sort(self):
     test_data = {1: 2, 4: 3, 6: 1, 2: 4, 5: 9, 7: 8, 3: 5}
     try:
         shell_sort(test_data)
     except TypeError:
         pass
     else:
         raise BaseException
Exemple #5
0
 def check_str_to_sort(self):
     test_data = "1,2,3,4,5,6,7,8"
     try:
         shell_sort(test_data)
     except TypeError:
         pass
     else:
         raise BaseException
Exemple #6
0
    def check_return_sorted_list(self):
        test_list = [4, 23, 8, 42, 16, 15]
        builtin_sorted_list = sorted(test_list)
        shell_sorted_list = shell_sort(test_list)

        assert_equal(
            builtin_sorted_list, shell_sorted_list,
            "List {0} != {1}".format(builtin_sorted_list, shell_sorted_list))
Exemple #7
0
    def check_list_two_elements(self):
        test_list = [20, 16]
        builtin_sorted_list = sorted(test_list)
        shell_sorted_list = shell_sort(test_list)

        assert_equal(
            builtin_sorted_list, shell_sorted_list,
            "List {0} != {1}".format(builtin_sorted_list, shell_sorted_list))
Exemple #8
0
def startAlgorithm():
    global data
    if not data: return

    if algMenu.get() == 'Quick Sort':
        quick_sort(data, 0, len(data) - 1, drawData, speedScale.get())
    elif algMenu.get() == 'Bubble Sort':
        bubble_sort(data, drawData, speedScale.get())
    elif algMenu.get() == 'Merge Sort':
        merge_sort(data, drawData, speedScale.get())
    elif algMenu.get() == 'Selection Sort':
        selection_sort(data, drawData, speedScale.get())
    elif algMenu.get() == 'Heap Sort':
        heap_sort(data, drawData, speedScale.get())
    elif algMenu.get() == 'Insertion Sort':
        insertion_sort(data, drawData, speedScale.get())
    elif algMenu.get() == 'Shell Sort':
        shell_sort(data, drawData, speedScale.get())

    drawData(data, ['green' for x in range(len(data))])
Exemple #9
0
 def test_list_of_ints_and_strings_raise_error(self):
     data = [1, 2, 3, 'e'],
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #10
0
 def test_list_of_strings_raise_error(self):
     data = ['4', '3', '1', '2'],
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #11
0
 def test_list_of_non_empty_lists_raise_error(self):
     data = [[1, 2, 3, 4], [1, 2, 3, 4], [5, 6, 7, 8], [7, 4, 6, 3]]
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #12
0
 def test_list_of_empty_lists_raise_error(self):
     data = [[], [], [], []]
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #13
0
    def check_list_of_one_element(self):
        test_list = [0]
        shell_sorted_list = shell_sort(test_list)

        assert_equal(test_list, shell_sorted_list,
                     "List {0} != {1}".format(test_list, shell_sorted_list))
Exemple #14
0
 def test_set_raise_error(self):
     data = {5, 4, 3, 2, 6}
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #15
0
 def test_tuple_raise_error(self):
     data = (1, 2, 3, 4, 5, 2, 4, 1, 3),
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #16
0
 def test_ok(self):
     data = [5, 6, 4, 3, 8, 9, 10, 234, 123, 543, 234, 654]
     self.assertEquals(shell_sort(data), sorted(data))
Exemple #17
0
 def check_list_of_zeroes(self):
     test_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
     shell_sorted_list = shell_sort(test_list)
     assert_equal(test_list, shell_sorted_list,
                  "List {0} != {1}".format(test_list, shell_sorted_list))
Exemple #18
0
    def check_already_sorted_list(self):
        test_list = [18, 27, 36, 45, 54, 63, 72, 81]
        shell_sorted_list = shell_sort(test_list)

        assert_equal(test_list, shell_sorted_list,
                     "List {0} != {1}".format(test_list, shell_sorted_list))
Exemple #19
0
 def test_string_raise_error(self):
     data = '5,4,3,2,1'
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #20
0
 def test_list_only_zeroes(self):
     data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
     self.assertEquals(shell_sort(data), sorted(data))
Exemple #21
0
 def test_dict_raise_error(self):
     data = {1: 2, 3: 4, 5: 6, 7: 8}
     with self.assertRaises(TypeError):
         shell_sort(data)
Exemple #22
0
 def test_list_same_values(self):
     data = [5, 5, 5, 5, 5, 5, 5, 5, 5]
     self.assertEquals(shell_sort(data), sorted(data))
Exemple #23
0
 def test_list_1_element(self):
     data = [1]
     self.assertEquals(shell_sort(data), sorted(data))
Exemple #24
0
 def test_sorted_list(self):
     data = [1, 2, 3, 4]
     self.assertEquals(shell_sort(data), sorted(data))
Exemple #25
0
 def test_empty_list_raise_error(self):
     data = []
     with self.assertRaises(ValueError):
         shell_sort(data)
Exemple #26
0
 def test_shellsort(self, lst):
     self.assertEqual(shell_sort(lst), sorted(lst))