def main():
    clip_array = read_file("resources/data.csv")

    print("\n!------ Bubble sort ------!\n")
    start = timeit.default_timer()
    bubble_sort(clip_array.copy())
    print("time:", timeit.default_timer() - start, '\n')
    print(bubble_sort(clip_array))

    print("\n!------ Quick sort ------!\n")
    start = timeit.default_timer()
    quick_sort(clip_array.copy(), 0, len(clip_array.copy()) - 1)
    print("time:", timeit.default_timer() - start, '\n')
    print(quick_sort(clip_array, 0, len(clip_array) - 1))
Example #2
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
 def test_quick_sort_even_list(self):
     in_order = quick_sort([4, 3, 1, 8])
     self.assertEqual([1, 3, 4, 8], in_order)
Example #4
0
def test_quick_sort():
    nums = [10, 30, 5, 1, 100, 20, 6, 50]
    assert quick_sort(nums) == [1, 5, 6, 10, 20, 30, 50, 100]
Example #5
0
def test_sort():
    seq = list(np.random.randint(0, 1000, size=[1000]))
    assert quick_sort(seq) is None
    assert seq == sorted(seq)
Example #6
0
 def test_in_order(self):
     x = [1, 2, 3, 4, 5]
     assert quick_sort.quick_sort(x) == [1, 2, 3, 4, 5]
Example #7
0
 def test_reverse_order(self):
     x = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
     assert quick_sort.quick_sort(x) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Example #8
0
def test_quick_sort_with_non_list():
    assert quick_sort("a") is None
Example #9
0
 def test_many_items(self):
     x = [1, 2, 10, 0, 1, -1, 4, 8]
     assert quick_sort.quick_sort(x) == [-1, 0, 1, 1, 2, 4, 8, 10]
Example #10
0
 def test_quick_sort_odd_list(self):
     in_order = quick_sort([4, 3, 1, 8, 7])
     self.assertEqual([1, 3, 4, 7, 8], in_order)
Example #11
0
 def test_quick_sort_one_element_list(self):
     in_order = quick_sort([4])
     self.assertEqual([4], in_order)
Example #12
0
def test_quick_sort_10_random_elements():
    a_list = [randint(1, 10) for _ in range(10)]
    assert quick_sort(a_list) == sorted(a_list)
Example #13
0
def test_quick_sort_with_10_elements():
    a_list = [6, 4, 3, 6, 5, 10, 10, 10, 9, 5]
    assert quick_sort(a_list) == sorted(a_list)
Example #14
0
def test_quick_sort_4_elements():
    assert quick_sort([1, 2, 3, 4]) == [1, 2, 3, 4]
    assert quick_sort([1, 2, 2, 4]) == [1, 2, 2, 4]
    assert quick_sort([4, 2, 2, 4]) == [2, 2, 4, 4]
    assert quick_sort([4, 3, 2, 1]) == [1, 2, 3, 4]
Example #15
0
def test_quick_sort_3_elements():
    assert quick_sort([1, 2, 3]) == [1, 2, 3]
    assert quick_sort([1, 3, 2]) == [1, 2, 3]
    assert quick_sort([3, 2, 1]) == [1, 2, 3]
    assert quick_sort([3, 3, 3]) == [3, 3, 3]
    assert quick_sort([2, 3, 2]) == [2, 2, 3]
Example #16
0
def test_quick_sort_two_elements():
    assert quick_sort([1, 2]) == [1, 2]
    assert quick_sort([1, 1]) == [1, 1]
    assert quick_sort([2, 1]) == [1, 2]
Example #17
0
def test_quick_sort_one_element():
    assert quick_sort([1]) == [1]
Example #18
0
def test_quick_sort_empty_list():
    assert quick_sort([]) == []
Example #19
0
 def test_quick_sort_empty_list(self):
     in_order = quick_sort([])
     self.assertEqual([], in_order)
Example #20
0
 def test_empty(self):
     x = []
     assert quick_sort.quick_sort(x) == []
Example #21
0
 def test_one_item(self):
     x = [1]
     assert quick_sort.quick_sort(x) == [1]
Example #22
0
 def test_basic_quick_sort_median_pivot(self):
     random_list = [randint(0, 1000) for _ in xrange(0, 1000)]
     expected = sorted(random_list)
     actual = quick_sort(random_list, PivotSelectionType.MEDIAN)
     self.assertTrue(expected == actual)