Now implement the mergesort function. In the base case (len(lst)<2), return the list itself. Otherwise, split the list into a left half and a right half recursively and use the above merge() function to combine sub-results. Note: Use integer division // when computing the length for each subproblem.   from random import randint def mergesort(lst):     """Implementation of the MergeSort algorithm.       Precondition: lst is a list containing elements that can be compared.     :param lst - a list of comparable elements     :resut - a list containing all elements in lst in ascending order."""       pass # your code goes here ## wrapper to return a shuffled list, shuffle() updates the input list def shuffled(lst):     result = [elem for elem in lst] ## copy lst     shuffle(result)     return result   tests = [          [ [shuffled([n for n in range(20)])], [n for n in range(20)]],          [ [[n for n in range(19,-1,1)]], sorted([n for n in range(19,-1,1)])],          [ [[]], []],          [ [[n for n in range(21)]], [n for n in range(21)]] ]   try:     for n,t in enumerate(tests):         print('test',n,': ',end='')         D = mergesort(*t[0])         if (D!=t[1]):             print('no exception raised, but result incorrect')             print('INPUT: ',t[0][0])             print('IS:    ',D)             print('SHOULD:',t[1])         else:             print('correct') except:     print('Your function raised an exception')     raise

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
icon
Concept explainers
Question

Now implement the mergesort function. In the base case (len(lst)<2), return the list itself. Otherwise, split the list into a left half and a right half recursively and use the above merge() function to combine sub-results. Note: Use integer division // when computing the length for each subproblem.

 

from random import randint

def mergesort(lst):

    """Implementation of the MergeSort algorithm.

 

    Precondition: lst is a list containing elements that can be compared.

    :param lst - a list of comparable elements

    :resut - a list containing all elements in lst in ascending order."""

 

    pass # your code goes here



## wrapper to return a shuffled list, shuffle() updates the input list

def shuffled(lst):

    result = [elem for elem in lst] ## copy lst

    shuffle(result)

    return result

 

tests = [

         [ [shuffled([n for n in range(20)])], [n for n in range(20)]],

         [ [[n for n in range(19,-1,1)]], sorted([n for n in range(19,-1,1)])],

         [ [[]], []],

         [ [[n for n in range(21)]], [n for n in range(21)]]

]

 

try:

    for n,t in enumerate(tests):

        print('test',n,': ',end='')

        D = mergesort(*t[0])

        if (D!=t[1]):

            print('no exception raised, but result incorrect')

            print('INPUT: ',t[0][0])

            print('IS:    ',D)

            print('SHOULD:',t[1])

        else:

            print('correct')

except:

    print('Your function raised an exception')

    raise

Expert Solution
steps

Step by step

Solved in 4 steps with 2 images

Blurred answer
Knowledge Booster
Types of Linked List
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-engineering and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY