Question

In: Computer Science

C++ Analysis of Sorting Algorithms Design a class AbstractSort that can be used to analyze the...

C++

Analysis of Sorting Algorithms

Design a class AbstractSort that can be used to analyze the number of comparisons performed by a sorting algorithm. The class should have a member function compare that is capable of comparing two array elements, and a means of keeping track of the number of comparisons performed. The class should be an abstract class with a pure virtual member function

void sort(int arr[ ], int size)

which, when overridden, will sort the array by calling the compare function to determine the relative order of pairs of numbers. Create a subclass of AbstractSort that uses a simple sorting algorithm to implement the sort function. The class should have a member function that can be called after the sorting is done to retrieve the number of comparisons performed.

Solutions

Expert Solution

//C++ CODE TO COPY//

#include<iostream>
using namespace std;

//abstratc class AbstractSort
class AbstractSort
{
   // Data members of class
public:
   int count_compare;
   //constructor
   AbstractSort()
   {
       this->count_compare = 0;
   }
  
   //compare function which will return true if first index (element) will greater than second
   //element provded in parameters
   bool compare(int elem1, int elem2)
   {
       //increment compare counter each time this function called
       count_compare++;
       if (elem1 > elem2)
           return true;
       else
           return false;
   }
   // Pure Virtual Function sort
   virtual void sort(int arr[], int size) = 0;

};

class sorting : public AbstractSort
{
public:
   //constructor
   sorting() : AbstractSort(){};
   void sort(int arr[], int size)
   {  
       //sorting elements by comparing each to array elements
       for (int i = 0; i < size; i++)
       {
           for (int j = i + 1; j < size; j++){
               //calling parent class compare function to determine maximum number
               if (compare(arr[i], arr[j])){
                   int temp = arr[i];
                   arr[i] = arr[j];
                   arr[j] = temp; // change elements location(index) if previouse one is greater than next one
              
               }
           }
       }
   }

   //getting total comparisons during sorting done
   int getCompareCount()
   {
       return this->count_compare;
   }
};

//amin driver function
int main()
{
   //initialising sorting class object
   sorting *sort = new sorting();
  
   //array which we have to sort
   int arr[] = {3, 8, 100, 23, 50, 7, 1, 55, 2};
   int size = sizeof(arr) / sizeof(arr[0]);

   cout << "\nArray before sorting: ";
   for (int i = 0; i < size; i++)
   {
       cout << arr[i]<<" ";
   }
   //calling to sort function
   sort->sort(arr, size);
   cout << "\n\nArray after sorting: ";
   for (int i = 0; i < size; i++)
   {
       cout << arr[i]<<" ";
   }
   cout << "\n\nNo of Comparison done: " << sort->getCompareCount() << endl;

   return 0;
}

//OUTPUT//

Comment down for any queries!
Please give a thumbs up if you are satisfied and helped with the answer :)


Related Solutions

Implementation of Quick sort and heap sorting algorithms in C++
Implementation of Quick sort and heap sorting algorithms in C++
Write a C++ program to compare those two searching algorithms and also compare two sorting algorithms....
Write a C++ program to compare those two searching algorithms and also compare two sorting algorithms. You need to modify those codes in the book/slides to have some counters to count the number of comparisons and number of swaps. In the main function, you should have an ordered array of 120integers in order to test searching algorithms, and the other two identical arrays of 120integers not in order to test sorting algorithms. Display all counters in the main functions.Counter for...
We saw in class different sorting algorithms, and we generally assumed the input to be sorted...
We saw in class different sorting algorithms, and we generally assumed the input to be sorted wasj an array. Here, the provided input is an unordered linked list of n elements with integer values. We are interested in sorting this list in increasing order (smallest first), in O(n log n) worst case time, while using constant space (also called in-place sorting). Note that recursion requires additional space on the stack, so should EC330 Applied Algorithms and Data Structures for Engineers,...
Problem 2 (C++): Design and implement a class complexType, that can be used to process complex...
Problem 2 (C++): Design and implement a class complexType, that can be used to process complex numbers. A number of the form a +ib, in which i2 = -1 and a and b are real numbers, is called a complex number. We call a the real part and b the imaginary part of a + ib. Complex numbers can also be represented as ordered pairs (a, b). The class you will design should have the following features. Constructor Your class...
Implementation of Quick sort and heap sorting algorithms in C++ FULL PROGRAMM BOTH THE QUICK SORT...
Implementation of Quick sort and heap sorting algorithms in C++ FULL PROGRAMM BOTH THE QUICK SORT AND HEAP SORT IN THE SAME PROGRAMM
Overview For this assignment, design and implement the methods for a class that can be used...
Overview For this assignment, design and implement the methods for a class that can be used to represent a quadratic equation. int main() has already been written for this assignment. It is available for download from Blackboard or by using the following link: http://faculty.cs.niu.edu/~byrnes/csci240/pgms/240pgm8.cpp All that needs to be done for this assignment is to add the class definition and method implementation to the above CPP file. The Quadratic class Data Members The class contains three data members: an integer...
how can variance analysis be used to analyze and control costs
how can variance analysis be used to analyze and control costs
Assume your sorting algorithms have to deal with lists that can potentially contain duplicates. Assume the...
Assume your sorting algorithms have to deal with lists that can potentially contain duplicates. Assume the same sorting algorithms as discussed in class / in the textbook. (a) What is the running time of Insertion Sort when all elements in a given list of length N are equal? Explain your answer. (b) Give a Θ-bound on the running time of Mergesort for the case that all elements in a given list of length N are equal (assuming N is a...
Mergesort is known to be one of the fastest algorithms for sorting lists of data. In...
Mergesort is known to be one of the fastest algorithms for sorting lists of data. In fact, the runtime of mergesort is proportional to n· logn where n is the size of the list to be sorted. Bubblesort, on the other hand is a much slower algorithm, since it's runtime is proportional to n2 , where n is the size of the list to be sorted. As an experiment, mergesort is run on a slow computer, bubblesort is run on...
A Bookstore Application C++ Design the class Book. Each object of the class Book can hold...
A Bookstore Application C++ Design the class Book. Each object of the class Book can hold the following information about a book: title, authors, publisher, ISBN Include the member functions to perform the various operations on the objects of Book. For example, the typical operations that can be performed on the title are to show the title, set the title. Add similar operations for the publisher, ISBN , and authors. Add the appropriate constructors and a destructor (if one is...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT