def runTest(self): classes = [ sa.BubbleSort(), sa.InsertionSort(), sa.MergeSort(), sa.ShellSort(), sa.QuickSort(), sa.SelectionSort() ] for cls in classes: a_list_copy = list(self.a_list) cls.sort(a_list_copy) error_msg = "List not sorted for %s..." % cls.__class__.__name__ self.assertEqual(a_list_copy, [0, 2, 3, 4.9, 54, 100, 505], error_msg)
""" import sorting_algorithms, time, os, sys os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" import pygame dimensions = (1024, 512) # The y value should be equal to the array length algorithms = {"SelectionSort": sorting_algorithms.SelectionSort(), \ "BubbleSort": sorting_algorithms.BubbleSort(), \ "InsertionSort": sorting_algorithms.InsertionSort(), \ "ShellSort": sorting_algorithms.ShellSort(), \ "RadixSort": sorting_algorithms.RadixSort(), \ "CocktailSort": sorting_algorithms.CocktailSort(), \ "GnomeSort": sorting_algorithms.GnomeSort(), \ "MergeSort": sorting_algorithms.MergeSort(), \ "QuickSort": sorting_algorithms.QuickSort(), \ "HeapSort": sorting_algorithms.HeapSort(), \ "BitonicSort": sorting_algorithms.BitonicSort(), \ "BucketSort": sorting_algorithms.BucketSort()} if len(sys.argv) > 1: if sys.argv[1] == "list": for key in algorithms.keys(): print(key, end=" ") print("") sys.exit(0) # Pygame Initialisation pygame.init() display = pygame.display.set_mode((dimensions[0], dimensions[1])) display.fill(pygame.Color("white"))
cutoff = False, max_values[0] = 1000, step = 1 """ import sorting_algorithms, time, csv, os, sys, math os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide" import pygame # Sorting Algorithm Variables cutoff = False # If true sorting algorithms above graph will no longer be used for sorting # This is good for large max values as sorting will only be done by more efficient algorithms # Note - this will make the max and min values only based on the current times for algorithms still in use iterations = 10 # Amount of results incuded in average values step = 1 # Step between each length of the array algorithms = [sorting_algorithms.SelectionSort(), sorting_algorithms.BubbleSort(), sorting_algorithms.InsertionSort(), sorting_algorithms.ShellSort(), \ sorting_algorithms.RadixSort(), sorting_algorithms.CocktailSort(), sorting_algorithms.GnomeSort(), sorting_algorithms.MergeSort(), \ sorting_algorithms.QuickSort(), sorting_algorithms.HeapSort(), sorting_algorithms.BucketSort()] off_graph = [ False ] * 11 # Array of booleans to check if algorithms are off the graph # Graph Variables window = (1920, 800) # Window size dimensions = (1800, 800) # Graph size padding = 80 # Padding of axis from side of window text_padding = 40 # Padding from axis to text scale_padding = 10 # Padding from axis to scale legend_padding = 20 # Padding between legend keys legend_square_padding = 20 # Padding between the colour square and legend text legend_square_size = 15 # Size of colour square size pnt_size = 3 # Size of the point representing each measurement scale_font_size = (
def main(): global SORTING screen.fill(v.BLACK) SORTING = False # Create panels and call sorting functions # Right Side bubble_sort = Panel(int(v.width - 450), 90, 300, 70, "BubbleSort") quick_sort = Panel(int(v.width - 450), 190, 300, 70, "QuickSort") insertion_sort = Panel(int(v.width - 450), 290, 300, 70, "InsertionSort") bogo_sort = Panel(int(v.width - 450), 390, 300, 70, "BogoSort") # Left side cocktail_sort = Panel(int(v.width / 6 - 100), 90, 300, 70, "CocktailSort") shell_sort = Panel(int(v.width / 6 - 100), 190, 300, 70, "ShellSort") gnome_sort = Panel(int(v.width / 6 - 100), 290, 300, 70, "GnomeSort") radix_sort = Panel(int(v.width / 6 - 100), 390, 300, 70, "RadixSort") alg = { "BubbleSort": sa.BubbleSort(), "QuickSort": sa.QuickSort(), "InsertionSort": sa.InsertionSort(), "BogoSort": sa.BogoSort(), "CocktailSort": sa.CocktailSort(), "ShellSort": sa.ShellSort(), "GnomeSort": sa.GnomeSort(), "RadixSort": sa.RadixSort() } # Choosing sorting function flag = True while flag: sa.status_continue = True for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() elif event.type == pygame.MOUSEBUTTONDOWN and SORTING == False: # PANELS FUNCTIONS if pygame.mouse.get_pos( )[0] >= bubble_sort.x and pygame.mouse.get_pos( )[0] <= bubble_sort.x + bubble_sort.x0: if pygame.mouse.get_pos( )[1] >= bubble_sort.y and pygame.mouse.get_pos( )[1] <= bubble_sort.y + bubble_sort.y0: alg["BubbleSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= quick_sort.x and pygame.mouse.get_pos( )[0] <= quick_sort.x + quick_sort.x0: if pygame.mouse.get_pos( )[1] >= quick_sort.y and pygame.mouse.get_pos( )[1] <= quick_sort.y + quick_sort.y0: alg["QuickSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= insertion_sort.x and pygame.mouse.get_pos( )[0] <= insertion_sort.x + insertion_sort.x0: if pygame.mouse.get_pos( )[1] >= insertion_sort.y and pygame.mouse.get_pos( )[1] <= insertion_sort.y + insertion_sort.y0: alg["InsertionSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= bogo_sort.x and pygame.mouse.get_pos( )[0] <= bogo_sort.x + bogo_sort.x0: if pygame.mouse.get_pos( )[1] >= bogo_sort.y and pygame.mouse.get_pos( )[1] <= bogo_sort.y + bogo_sort.y0: alg["BogoSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= cocktail_sort.x and pygame.mouse.get_pos( )[0] <= cocktail_sort.x + cocktail_sort.x0: if pygame.mouse.get_pos( )[1] >= cocktail_sort.y and pygame.mouse.get_pos( )[1] <= cocktail_sort.y + cocktail_sort.y0: alg["CocktailSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= shell_sort.x and pygame.mouse.get_pos( )[0] <= shell_sort.x + shell_sort.x0: if pygame.mouse.get_pos( )[1] >= shell_sort.y and pygame.mouse.get_pos( )[1] <= shell_sort.y + shell_sort.y0: alg["ShellSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= gnome_sort.x and pygame.mouse.get_pos( )[0] <= gnome_sort.x + gnome_sort.x0: if pygame.mouse.get_pos( )[1] >= gnome_sort.y and pygame.mouse.get_pos( )[1] <= gnome_sort.y + gnome_sort.y0: alg["GnomeSort"].play() flag = False if pygame.mouse.get_pos( )[0] >= radix_sort.x and pygame.mouse.get_pos( )[0] <= radix_sort.x + radix_sort.x0: if pygame.mouse.get_pos( )[1] >= radix_sort.y and pygame.mouse.get_pos( )[1] <= radix_sort.y + radix_sort.y0: alg["RadixSort"].play() flag = False pygame.display.update()