Esempio n. 1
0
 def test_sort_sorted_list_of_integers(self):
     """Test that when merge sort is passed a sorted list
     of integers that the list remains sorted.
     """
     merge_sort(self.sorted_list_of_integers)
     self.assertEqual(self.sorted_list_of_integers,
                      [-7, -2, -1, 0, 1, 4, 10])
Esempio n. 2
0
 def test_sort_unsorted_list_of_integers(self):
     """Test that when merge sort is passed an unsorted list
     of integers that the list is properly sorted.
     """
     merge_sort(self.unsorted_list_of_integers)
     self.assertEqual(self.unsorted_list_of_integers,
                      self.sorted_list_of_integers)
Esempio n. 3
0
 def test_merge_sort_is_stable(self):
     """Test that if two elements in a list have the same key,
     that their relative ordering is still preserved after the
     list is sorted.
     """
     merge_sort(self.unsorted_list_of_products)
     self.assertEqual(self.unsorted_list_of_products,
                      self.sorted_list_of_products_stable)
Esempio n. 4
0
def test_merge_sort_merge_sort_empty():
    '''
  Tests merge_sort's merge_sort function with an empty list
  '''

    lst = []

    assert_equals(merge_sort(lst), [])
Esempio n. 5
0
def test_merge_sort_merge_sort_normal():
    '''
  Tests merge_sort's merge_sort function with an unordered list
  '''

    lst = [5, 2, 4, 6, 1, 3]
    correct = [1, 2, 3, 4, 5, 6]

    assert_equals(merge_sort(lst), correct)
def bucket_sort(lst, f, k):
    """
    Sorts the given list with bucket sort algorithm.
    :param lst: The unsorted list
    :param f: A function f: element e -> [0, 1[ with f(e) <= f(e') if e <= e'
    :param k: number of buckets
    :return: the sorted list
    """
    buckets = [None for _ in range(k)]
    for item in lst:
        buckets[f(item) * k].append(item)
    sorted = []
    for bucket in buckets:
        sorted.append(merge_sort(bucket))
    return sorted
Esempio n. 7
0
def draw_chart(sort_type, original_data, frame_interval):
    fig = plt.figure(1, figsize=(16, 9))
    data_set = [Data(d) for d in original_data]
    axs = fig.add_subplot(111)
    plt.subplots_adjust(left=0.01, bottom=0.01, right=0.99, top=0.95)

    if sort_type == 1:
        frames = selection_sort(data_set)
    elif sort_type == 2:
        frames = bubble_sort(data_set)
    elif sort_type == 3:
        frames = insertion_sort(data_set)
    elif sort_type == 4:
        frames = merge_sort(data_set)
    elif sort_type == 5:
        frames = quick_sort(data_set)
    else:
        raise IndexError

    def animate(frame_no):
        # if fi % 2 != 0 and frame_interval < 10 and fi != len(frames)-1:
        #     return
        bars = []
        if len(frames) > frame_no:
            axs.cla()
            axs.set_title(s_type[sort_type])
            axs.set_xticks([])
            axs.set_yticks([])
            bars += axs.bar(list(range(Data.length)),
                            [d.value for d in frames[frame_no]],
                            1,
                            color=[d.color
                                   for d in frames[frame_no]]).get_children()
        frame_no += 1
        return bars

    anim = animation.FuncAnimation(fig,
                                   animate,
                                   frames=len(frames),
                                   interval=frame_interval,
                                   repeat=False)
    return plt, anim
Esempio n. 8
0
 def test_merge_sort_desc(self):
     expected: List[int] = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
     merge_sort.merge_sort(arr, True)
     self.assertEqual(expected, arr)
Esempio n. 9
0
 def test_sort_empty_list(self):
     """Test that when merge sort is passed an empty list,
     that nothing happens."""
     merge_sort(self.empty_list)
     self.assertEqual(self.empty_list, [])
Esempio n. 10
0
 def test_get_permutations(self):
     input_list = [7, 23, 5, 1, 0, 65, 3, 56, -4, 22, 10, 1, 81]
     expected_list = [-4, 0, 1, 1, 3, 5, 7, 10, 22, 23, 56, 65, 81]
     self.assertEquals(expected_list, merge_sort.merge_sort(input_list))
Esempio n. 11
0
def test_sort():
    xs = list(np.random.randint(0, 1000, size=[1000]))
    copy = xs.copy()
    assert merge_sort(xs) == sorted(xs)
    assert xs == copy
Esempio n. 12
0
def main():
    print(merge_sort([12, 54, 6, 32, 78, 4, 23, 1, 76, 8, 0, 43]))
Esempio n. 13
0
 def test_merge_sort_asc(self):
     expected: List[int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     merge_sort.merge_sort(arr)
     self.assertEqual(expected, arr)
Esempio n. 14
0
 def test_merge_sort_empty(self):
     arr_one: List[int] = []
     merge_sort.merge_sort(arr_one)
     self.assertEqual([], arr_one)
Esempio n. 15
0
 def test_for_empty(self):
     expected = None
     output = merge_sort(None)
     self.assertEqual(output, expected)
Esempio n. 16
0
 def test_for_duplicate_values_in_input(self):
     expected = [1, 3, 3, 4, 5, 6]
     data_list = [4, 3, 5, 1, 6, 3]
     merge_sort(data_list)
     self.assertEqual(data_list, expected)
Esempio n. 17
0
 def test_for_event_list_size_input(self):
     expected = [1, 2, 3, 4, 5, 6]
     data_list = [4, 2, 5, 1, 6, 3]
     merge_sort(data_list)
     self.assertEqual(data_list, expected)
Esempio n. 18
0
 def test_for_single_input(self):
     expected = [1]
     merge_sort([1])
     self.assertEqual([1], expected)
 def test_quick_sort(self):
     self.assertEqual(merge_sort.merge_sort(self.array), self.sorted_array)
Esempio n. 20
0
 def test_merge_sort_one(self):
     arr_one: List[int] = [10]
     merge_sort.merge_sort(arr_one)
     self.assertEqual([10], arr_one)
Esempio n. 21
0
 def test_basic_merge_sort(self):
     random_list = [randint(0, 1000) for _ in xrange(0, 1000)]
     expected = sorted(random_list)
     actual = merge_sort(random_list)
     self.assertTrue(expected == actual)