1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
GaryK [48]
3 years ago
14

Write code for iterative merge sort algorithm. It is also known as bottom-up merge sort. There should not be any recursive call

for this approach. Include your code and screenshot of output with the answer. You can choose any programming language for this problem.

Computers and Technology
1 answer:
krek1111 [17]3 years ago
4 0

Answer:

Here is the C++ program:

#include <iostream> // for using input output functions

using namespace std; // to identify objects as cin cout

void merge(int array[], int left, int mid, int right);  

// to merge the  array into two parts i.e. from left to mid and mid+1 to right

int minimum(int a, int b) { return (a<b)? a :b; }

//to find the minimum of the 2 values

void IterativeMergeSort(int array[], int num) { //function to sort the array

  int size; //determines current size of subarrays

  int left;  //to determine the start position of left subarray

//to merge the sub arrays using bottom up approach          

  for (size=1; size<=num-1; size = 2*size)    {

      //to select start position of different subarrays of current size  

      for (left=0; left<num-1; left += 2*size)   {    

// To determine the end point of left sub array and start position of right //which is mid+1    

          int mid = minimum(left + size - 1, num-1);  

          int right = minimum(left + 2*size - 1, num-1);  

// Merge the sub arrays from left to mid and mid+1 to right

         merge(array, left, mid, right);        }    } }

 // function to merge the  array into two parts i.e. from left to mid and mid+1 //to right

void merge(int array[], int left, int mid, int right){

   int i, j, k; // variables to point to different indices of the array

   int number1 = mid - left + 1;

   int number2 =  right - mid;  

//creates two auxiliary arrays LEFT and RIGHT

   int LEFT[number1], RIGHT[number2];  

//copies this mid - left + 1 portion to LEFT array

   for (i = 0; i < number1; i++)

       LEFT[i] = array[left + i];

//copies this right - mid portion to RIGHT array

   for (j = 0; j < number2; j++)

       RIGHT[j] = array[mid + 1+ j];  

   i = 0;

   j = 0;

   k = left;

//merge the RIGHT and LEFT arrays back to array from left to right i.e //arr[left...right]

   while (i < number1 && j < number2)     {

       if (LEFT[i] <= RIGHT[j])    

/*checks if the element at i-th index of LEFT array is less than or equals to that of j-th index of RIGHT array */

{             array[k] = LEFT[i];

//if above condition is true then copies the k-th part of array[] to LEFT //temporary array

           i++;         }

       else //when the above if condition is false

       {  array[k] = RIGHT[j];

//moves k-th part of array[] to j-th position of RIGHT temporary array

           j++;         }

       k++;     }  

   while (i < number1)     {  //copies remaining elements of LEFT array

       array[k] = LEFT[i];

       i++;

       k++;     }  

   while (j < number2)     { //copies remaining elements of RIGHT array

       array[k] = RIGHT[j];

       j++;

       k++;     } }  

int main() {

   int Array[] = {9, 18, 15, 6, 8, 3}; // an array to be sorted

   int s = sizeof(Array)/sizeof(Array[0]);

//sizeof() is used to return size of array

   cout<<"Input array:  ";

   int i;

   for (i=0; i < s; i++) //to print the elements of given array

       cout<<Array[i]<<" ";

       cout<<endl;

   IterativeMergeSort(Array, s);   //calls IterativeMergeSort() function

   cout<<"Sorted array after applying Iterative Merge Sort:"<<endl;

  for (i=0; i < s; i++) //to print the elements of the sorted array

      cout<<Array[i]<<" "; }

Explanation:

The program is well explained in the comments mentioned above with each line of the code. The screenshot of the program along with its output is attached.

You might be interested in
Which of these has led to the evolution of mobile marketing?
Nana76 [90]
D. using cell phones in a work place. when cell phones came out with apps and games people started paying more attention to the social media apps and their games then their own job, hope this helps :)
5 0
3 years ago
Alex is creating a new website to help college freshman succeed during their first year away from home. How can he beat use the
Aleksandr [31]

Answer: I would say do a google search but the most plausible answer is A.

4 0
4 years ago
Read 2 more answers
You can press the ____ keys to open the Format Cells dialog box.
Kobotan [32]
You can press the 1 + Control(CTRL).
4 0
3 years ago
The sun can be an excellent source of natural light.<br> True.<br> False.
Blababa [14]

Answer:

The answer is TRUE

7 0
3 years ago
Read 2 more answers
research the internet and develop a list of three important rules/standards you will give to the team to help everyone easily fi
natima [27]
The three important rules/standards that I can give to the team to help everyone easily find the documents in the future are the following:
1. Develop naming convention on how to define filename/documents.
2. All changes in the documents must be well documented, there should be a record of changes.
3.There must be a defined standard procedures on how to save and access the file, and who are allowed to modify the documents.
6 0
4 years ago
Other questions:
  • A(n) ________ signal is a discrete, binary waveform that transmits data coded into two discrete states such as 1-bits and 0-bits
    12·1 answer
  • How can improving one’s reasoning skills also improve one’s performance on the job?
    12·2 answers
  • Which device in a wireless local area network (wlan) determines the next network point to which a packet should be forwarded tow
    12·1 answer
  • I need help with Microsoft.
    6·1 answer
  • You want to write a Python program to compute the average of three integer quiz grades for a single student. Decide what variabl
    8·1 answer
  • Question 7 (1 point)<br> Increasing hue levels means increasing saturation.<br> True<br> False
    11·1 answer
  • Heya! I’m quite lonely, so here are some points. I want to play some mc with others but the only version I’m able to play is edu
    11·2 answers
  • What is your favorite anime ( All movies and episodes related to them count )
    8·2 answers
  • Consider the key success factors of B2C. Is it only IT? What is most important?​
    8·1 answer
  • Which sql keyword is used to retrieve a minimum value from an attribute in a table
    7·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!