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

  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..

  Geometric calculations

In this homework assignment, you will be writing an area calculator to understand console input/output, some basic data types, and basic arithmetic in C++.

  Create a class called rational for performing arithmetic

Rational Class Create a class called Rational for performing arithmetic with fractions. Write a program to test your class. Use integer variables to represent the private data of the class-the numerator and the denominator. Provide a constructor th..

  Why can not whitespace be read with the extraction operator

What is the difference between formatted input and unformatted input? Why can't whitespace be read with the extraction operator? What is a stream?

  Displays all the numbers

write a java program that displays all the numbers from 100 to 200, ten per line, that are divisible by 5 and 6 .

  Program that print out the contents of the file

Write a program that will prompt for a file name to open for writing. Prompt the user for 5 lines of text, writing each to the file. When finished, print out the contents of the file.

  What is wrong with this function

What is wrong with this function? Can you find problem in this code?

  Program that evaluates a infix expression

Program that evaluates a infix expression using stacks terminated by an equal sign. for example: (4-2)-5)/(2+1)-2))=the expression will contain single digit and the operators +, -, *,/. Make sure to consider the operator precedence.

  Three dimensional array representing parking spaces

start with code in the file lab.cpp. This program works with a three dimensional array representing parking spaces in a parking garage on several floors. The code is incomplete. The functions "main", "display" and "showSpace" are complete. Your job i..

  Manipulate various types of accounts

Each of these accounts has various options. For example, you may have a savings account that requires no minimum balance but has a lower interest rate. Similarly, you may have a checking account that limits the number of checks you may write. Anot..

  Construct the arraylisttype class application

Construct the Student Class Student.h and Student.cpp student class should add a Student.h header file for your class definitions and a Student.cpp implementation file comprised of first name, last name, ram id

  Why are timestamps used in the kerberos protocol

Assume that Alice shares a secret s with her company's server computer. When Alice is on a trip, she tries to store an important message in the CEO's account directory.

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