Exemplo n.º 1
0
def is_unique(keys):
    """
    Implement an algorithm to determine if a string has all unique characters. 
    What if you cannot use additional data structures?
    """
    merge_sort(list(keys), 0, len(keys))
    prev = keys[0]
    for i in range(1, len(keys)):
        if keys[i] == prev:
            return False
        prev = keys[i]
    return True
Exemplo n.º 2
0
def find_repeated_elements(arr):
    """
    Find all numbers that repeat twice.
    """
    arr_length = len(arr)
    merge_sort(arr, 0, arr_length)
    repeated_elements = set()
    prev = arr[0]
    for i in range(1, arr_length):
        if arr[i] == prev:
            repeated_elements.add(arr[i])
        prev = arr[i]
    return repeated_elements
Exemplo n.º 3
0
def is_there_sum_of_two_elements(keys, v):
    """
    Write a function that, given an array of n numbers and another number x, 
    determines whether or not there exist two elements in the array whose sum is 
    exactly x. 
    """
    keys_length = len(keys)
    leftmost_index = 0
    rightmost_index = keys_length - 1
    merge_sort(keys, leftmost_index, rightmost_index)
    while leftmost_index < rightmost_index:
        if keys[leftmost_index] + keys[rightmost_index] == v:
            return True
        elif keys[leftmost_index] + keys[rightmost_index] < v:
            leftmost_index += 1
        else:
            rightmost_index -= 1
    return False
Exemplo n.º 4
0
def sort():
    global data

    timer = set_sort_speed()

    if menu.get() == 'bogo_sort':
        bogo_sort(data, drawBars, timer)

    elif menu.get() == 'bubble_sort':
        bubble_sort(data, drawBars, timer)

    elif menu.get() == 'insertion_sort':
        insertion_sort(data, drawBars, timer)

    elif menu.get() == 'quick_sort':
        quick_sort(data, 0, len(data) - 1, drawBars, timer)

    elif menu.get() == 'merge_sort':
        merge_sort(data, 0, len(data) - 1, drawBars, timer)
Exemplo n.º 5
0
    def visualize_algorithm(self, name: str = 'insertion_sort'):
        """ Visualizes a specific algorithm """
        options = {
            'insertion_sort': insertion_sort(self.data),
            'bubble_sort': bubble_sort(self.data),
            'selection_sort': selection_sort(self.data),
            'quick_sort': quick_sort(self.data, 0,
                                     len(self.data) - 1),
            'merge_sort': merge_sort(self.data, 0, len(self.data))
        }

        algorithm = options[name]
        plt.title(name)
        self.ani = animation.FuncAnimation(self.fig,
                                           func=self._update_animation,
                                           frames=algorithm,
                                           interval=1,
                                           repeat=False)
        plt.show()
Exemplo n.º 6
0
 def test_none(self):
     self.assertEqual(merge_sort(None), None)
Exemplo n.º 7
0
 def test_sorted(self):
     self.assertEqual(merge_sort([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
                      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Exemplo n.º 8
0
 def test_many(self):
     self.assertEqual(merge_sort([9, 4, 1, 7, 3, 0, 6, 8, 2, 5]),
                      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Exemplo n.º 9
0
 def test_two(self):
     self.assertEqual(merge_sort([2, 1]), [1, 2])
Exemplo n.º 10
0
 def test_one(self):
     self.assertEqual(merge_sort([9]), [9])
Exemplo n.º 11
0
 def test_wrong_type(self):
     self.assertEqual(merge_sort(238), 238)
def test_unordered():
    assert merge_sort([1, 0, 2]) == [0, 1, 2]
Exemplo n.º 13
0
 def test_merge_sort(self, numbers):
     merged_list = merge_sort(numbers)
     sorted_list = sorted(numbers)
     self.assertEqual(merged_list, sorted_list)
Exemplo n.º 14
0
def test_merge_sort():
    keys = [6, 7, 9, 12, 0, 1, 2]
    expected_res = sorted(keys)
    merge_sort(keys, 0, len(keys))
    assert keys == expected_res
Exemplo n.º 15
0
def test_merge_sort():
    assert [merge.merge_sort(prob1[:]), merge.merge_sort(prob2[:])] == [solution, solution]
def test_singleton():
    assert merge_sort([0]) == [0]
def test_empty():
    assert merge_sort([]) == []
def test_unordered_longer():
    assert merge_sort([100, -1, 1, 0, 2, 0.5, 0.01]) == [-1, 0, 0.01, 0.5, 1, 2, 100]
def test_ordered():
    assert merge_sort([0, 1]) == [0, 1]
def test_reversed():
    assert merge_sort([1, 0]) == [0, 1]