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))
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)
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]
def test_sort(): seq = list(np.random.randint(0, 1000, size=[1000])) assert quick_sort(seq) is None assert seq == sorted(seq)
def test_in_order(self): x = [1, 2, 3, 4, 5] assert quick_sort.quick_sort(x) == [1, 2, 3, 4, 5]
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]
def test_quick_sort_with_non_list(): assert quick_sort("a") is None
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]
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)
def test_quick_sort_one_element_list(self): in_order = quick_sort([4]) self.assertEqual([4], in_order)
def test_quick_sort_10_random_elements(): a_list = [randint(1, 10) for _ in range(10)] assert quick_sort(a_list) == sorted(a_list)
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)
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]
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]
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]
def test_quick_sort_one_element(): assert quick_sort([1]) == [1]
def test_quick_sort_empty_list(): assert quick_sort([]) == []
def test_quick_sort_empty_list(self): in_order = quick_sort([]) self.assertEqual([], in_order)
def test_empty(self): x = [] assert quick_sort.quick_sort(x) == []
def test_one_item(self): x = [1] assert quick_sort.quick_sort(x) == [1]
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)