Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Assignment 1 Step 1: Implement 5 functions in Python that would sort an unsorted list, i.e defbubble_sort(my_list): defselection_sort(my_list): definsertion_sort(my_list): defquick_sort(mylist): definsertion_sort(mylist, left, right): Provide a

Assignment 1

Step 1:

Implement 5 functions in Python that would sort an unsorted list, i.e

defbubble_sort(my_list):

defselection_sort(my_list):

definsertion_sort(my_list):

defquick_sort(mylist):

definsertion_sort(mylist, left, right):

Provide a main that uses each of the above functions to sort a list of length 100 and make sure it works as expected


Step 2:

Add lines of code to the above functions so that apart from sorting the received list, it calculates T(n) and returns it. This means that each of the above functions will have a return value which is the exact number of operations executed to perform the sort. Use a main to test your T(n) calculation. A good way of testing your T(n) is this. Send a best case scenario, a worst case scenario and an average scenario to your sort function and see what numbers come out for your T(n). Explain what best, worst and average case scenarios will be for a sorting algorithm.

 

Step 3:

Use the sort functions with T(n) calculation feature to plot T(n) vs. n for a wide range of list sizes. Say 10, 50 , 100, 500, 1000, 5000, 10000, 50000, 100000, 1000000, 10000000. Make sure you use a WORST CASE scenario for your list so that your T(n) is a good reflection of O(n). Do you see your curves aligned with what we learnt about the performance of the sort algorithms

 

Step 4:

Using time library in python, time your sort algorithms for the same list sizes that you plotted in step 3 and this time plot algorithm completion time vs n. Interpret the results while compared to the step 3 plot and compared to your knowledge of the algorithm's performances. Don't forget to use WORST CASE scenario.

 

Example for Step 2 in bubble sort:

defbubble_sort(my_list): steps = 0

      for i in range(0, len(my_list) - 1):

            for j in range(0, len(my_list) - 1 - i):

                  if my_list[j] >my_list[j + 1]:

                       steps += 4 # 4 operations, 3 for the swap and one for the comparison

                       my_list[j], my_list[j + 1] = my_list[j + 1], my_list[j]

       return steps

 

Code to create a random list of a specific size for steps 3 and 4 :

import random

listSize = 50

rand_list = [random.randint(0,101) for val in range(listSize)]

rand_list.sort(reverse=True)

print("steps needed for sorting: {}".format(bubble_sort(rand_list)))


Step by Step Solution

3.48 Rating (161 Votes )

There are 3 Steps involved in it

Step: 1

To address the assignment steps provided you can follow the following approach Step 1 Implement sort... blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Java How To Program Late Objects Version

Authors: Paul Deitel, Deitel & Associates

8th Edition

0136123716, 9780136123712

More Books

Students also viewed these Programming questions