cutoff = True, max_values[0] = 10000, step = 10 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
and should not be used to compare time complexities as most of the time spent by the program is drawing the array on screen and not on sorting If you want to see a direct comarison between algorithm in terms of their scaling and time complexities go download my sorting algorithm comparison program. """ 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)
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()