Question: Part 1: Insertion sort is an algorithm for sorting an array of values into ascending order. It works by using two loops, an outer loop

 Part 1: Insertion sort is an algorithm for sorting an array

Part 1: Insertion sort is an algorithm for sorting an array of values into ascending order. It works by using two loops, an outer loop that scans the data once, and an inner loop that scans from position of the outer loop counter j to the start of the array, looking for a suitable spot to place the current element being sorted. Insertion sort has 0 (n?) running time, unless the input is already sorted, in which case the running time is O(n). Typically, an array of unsorted values is the input to insertion sort. In this assignment, you will implement the insertion sort algorithm (see pseudocode below) on a doubly-linked list (instead of an array). INSERTION-SORT(A) 1 for j + 2 to length[A] 2 do key = A[j] 3 Insert A[j] into the sorted sequence A[1.. j - 1]. 4 in j-1 5 while i >0 and A[i]> key 6 do A[i+1] A[i] 7 izi-1 8 A[i+1] key A doubly-linked list is just a linked list where each node in the list has both a pointer to the 'next' node and a pointer to the previous' node. The first node in the list has a nullptr to its previous' node. The last node in the list has a nullptr to its 'next' node. Step 1: create your own doubly-linked list class or check lecture 7 (code taken from 'Weiss' textbook) on how to create one in C++. You may use the implementation from lecture 7, if you want. Step 2: implement insertion sort using Linked List as input. The function signature should look something like this: template LinkedList& insertionSort(LinkedList& theList) { //your code here, eventually returns a sorted } Note the use of pass-by-reference and the use of templates. Do not simply convert the LinkedList to an array, sort using an array, and then convert it back! You must sort the LinkedList directly, otherwise the exercise loses its value. The purpose of the assignment is to get familiar with pointer manipulation and linked list operations. In your main, you should initialize a linked list and use 'for' loop combined with a random number generator to fill it with some random elements. Print the initial random list to display the elements. Then, pass your list to the insertionSort method (as above) and when the sorting completes, print the result to display the sorted elements. Part 2: Re-code insertion sort using C++'s vector class instead of a linked list as the underlying container (vector is basically a fancy version of array). Compare the running time (vector vs linked list) using the chrono library. Which implementation takes longer (linked list or vector)? Why? Write a small paragraph comment at the top of your 'main' explaining why you got the result you got when you timed the two implementations. Discuss time complexity

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!