Implementation of the recursive algorithm

Assignment Help C/C++ Programming
Reference no: EM13907315

1. Introduction.

In this assignment, you are required to compute the average number of comparisons required by Bubble sort, Selection sort, Insertion sort, Quick sort, and Merge sort algorithms to sort arbitrary10-element integer arrays with different elements. Obviously, you can consider only the arrays that are permutations of numbers 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 only.

For example, to compute the average number of comparisons required by Bubble sort, you need to apply the sorting algorithm to each of 10! = 3628800 permutations of 10 numbers to find the number of comparisons required in each case. Then you need to find the sum of all these numbers, and to divide the sum by 10.

2. Listing permutations.

Task 1. Recursive function.

This is a "hurdle" task. If you fail to complete it successfully you will get 0 marks for the whole assignment.

In this task you are required to write a C++ implementation of the recursive algorithm described below. The algorithm allows you to list one by one all permutations of the numbers 1, 2, ..., n (n is a positive integer).

The algorithm should be implemented as a recursive function with the following header:

bool nextPermutation(int array[], int arraySize)

The function receives an integer array argument which is a permutation of integers 1, 2, ..., n. If there is a "next" permutation to the permutation represented by the array, then the function returns true and the array is changed so that it represents the "next" permutation. If there is no "next" permutation, the function returns false and does not change the array.

Here is a description of the recursive algorithm you need to implement:

1. The first permutation is the permutation represented by the sequence (1, 2, ..., n).

2. The last permutation is the permutation represented by the sequence (n, ..., 2, 1).

3. If a1 ,...,an is an arbitrary permutation, then the "next" permutation is produced by the following procedure:

(i) If the maximal element of the array (which is n) is not in the first position of the array, say n = a where i > 1 , then swap ai and ai-1. This will give you the "next" permutation in this case.

(ii) If the maximal element of the array is in the first position, so n = a1 , then to find the "next" permutation to the permutation

(a1,...,an), first find the "next" permutation to

(a2,...,an), and then add a1 to the end of thus obtained array of (n-1) elements.

(iii) Consecutively applying this algorithm to permutations starting from (1, 2, ..., n), you will eventually list all n! possible permutations. The last one will be (n, ..., 2, 1).

For example, below is the sequence of permutations for n = 3, listed by the described algorithm:

(0 1 2) ; (0 2 1) ; (2 0 1) ; (1 0 2) ; (1 2 0) ; (2 1 0)

Task 2. Iterative version

Using the recursive algorithm, described in the previous section, develop an iterative method having the same functionality as the recursive nextPermutation method.

Task 3. Adding counters to the sorting functions.

Create a class SortingFunctions. This class should contain modified versions of the bubbleSort, insertionSort, selectionSort, quickSort, and mergeSort functions discussed in the lectures.

The modification means adding counters to the sorting methods that count the number of comparisons made by each of the functions during sorting.

Task 4. The main function

In the main function you should compute the average numbers of comparisons required by bubbleSort, insertionSort, selectionSort, quickSort, and mergeSort functions to sort 10-element integer array containing elements 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.

Reference no: EM13907315

Questions Cloud

Compute the economic value for each office worldwide : Compute the economic value for each office worldwide. What factors affect each office's economic value added? How can an office improve its economic value added?
Why does longer-term bond fluctuate more when interest rates : (Bond Valuation) Crawford Inc. has two bond issues outstanding, both paying the same annual interest of $85, called Series A and Series B. Series A has a maturity of 12 years, whereas Series B has a maturity of 1 year. Why does the longer-term (12-ye..
Perform ticket bookings for various flights : The development team of SoftSols Inc. analyzes the source code of the existing software and notes the following observations: The software contains a private class, named bookTickets, that contains the methods used to perform ticket bookings for va..
The current cash flows as a dividend to its shareholders : The firm you are CEO if has a current period cash flow of 1.75 million and pays no dividend. The present value of the company’s future cash flows is $25.0 million. Suppose you and the board announce a plan to pay out 40 percent of the current cash fl..
Implementation of the recursive algorithm : Develop an iterative method having the same functionality as the recursive nextPermutation method - Create a class SortingFunctions.
Required return to the issuing company on which security : Which financing will result in an issuer cost being less that the return being earned by the investor? The formula Do(1+g)/{P(1-f)} + g can be used to estimate the required return to the issuing company on which security?
Find an industry example where sourcing has benefited firm : Identify the primary ways in which the sourcing function impacts supply chain management (SCM). Find an industry example where sourcing has significantly benefited the firm and where it has significantly hurt the firm.
What is the common stock for year 2 : If the preferred stock is cumulative, determine the total amount of cash dividends paid to each class of stock in each of the three years. What is the Common Stock for year 2?
Optimize the preceding code for kathy : Optimize the preceding code for Kathy and find out the errors (if any). What would be the output of the preceding code, if the first number is 46 while the second number is 37?

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Write a c function to convert gallons-quarts-pints and cups

Write a C function named liquid() that is to accept an integer number and the addresses of the variables gallons, quarts, pints, and cups.

  How many times is the copy constructor called

In the subsequent code how many times is the copy constructor called in the given code?

  Cost of carrying additional luggage

The application used to calculate the cost of carrying additional luggage results in erroneous amount, if the weight of the luggage is a fractional number. Help the development team modify the code snippet so that the cost of carrying additional l..

  Write a function that takes two point arguments

Write a function that takes two POINT arguments and returns the midpoint between them and define a function distance() that takes two POINT arguments and returns the distance between them.

  Write a function - greatest common divisor

Write a function named "g_c_d" that takes two positive integer arguments and returns as its value the greatest common divisor of those two integers.

  Hierarchical control using player/stage simulator

In the Nested Hierarchical Controller, the PLAN module consists of a Mission Planner, a Navigator, and a Pilot. The Pilot connects with the ACT module to execute the drive and steering commands that cause the robot to move along a path segment.

  Database management

MIS3100 - DATABASE MANAGEMENT INDIVIDUAL PROJECT DEFINITION 2015-2016 Bhuiya PERSONAL PICTURE DATABASE You love to take pictures. However, with digital technology, instead of taking one or two pictures, you take hundreds. You have been collecting and..

  Prepare a linear support vector machine svm

Write a computer program to prepare a Linear Support Vector Machine SVM

  Create a constructor that initializes the data

After the user answers the question, just put the actual answer down below the one entered. You do not need to check if they were correct.

  Explain strings are an important part of programming

Strings are an important part of programming. They are used to transfer all sorts of data between the user and program, as well as from program to program. Humans communicate with streams because they are flexible enough to encode words and vari..

  Assign any new integer value entered by the user

Build a program that allows a user to select one of the following four menu options: enter new integer value, print pointer address, print integer address, and print integer value. For this program you will need to create two variables: one integer d..

  Consider the class

Consider the following class:How could you create an object of this class (Select all that apply)?

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd