How to apply insertion sort in from two sorted arrays?

Sep 29 2017 1:34 PM
Hi there, 
 
I am very new to programming, so please bear with me. 
I have a console application running that takes inputs from user and sorts it in ascending order using Merge sort. At the end of the console, I want to use insertion sort to create one single sorted list that will be outputted to the user in ascending order. Could someone help me do this using insertion sort. This is my code below. Sorry for all the comments, I use it to learn.
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6.   
  7. namespace MergeSort  
  8. {  
  9.     class MergeSort  
  10.     {  
  11.         static public void MainMerge(int[] numbers, int left, int mid, int right)  
  12.         {  
  13.             int[] temp = new int[25];  
  14.             int i, stop, number, position;  
  15.   
  16.             stop = (mid - 1);  
  17.             position = left;  
  18.             number = (right - left + 1);  
  19.   
  20.             while ((left <= stop) && (mid <= right))  
  21.             {  
  22.                 if (numbers[left] <= numbers[mid])  
  23.                     temp[position++] = numbers[left++];  
  24.                 else  
  25.                     temp[position++] = numbers[mid++];  
  26.             }  
  27.   
  28.             while (left <= stop)  
  29.                 temp[position++] = numbers[left++];  
  30.   
  31.             while (mid <= right)  
  32.                 temp[position++] = numbers[mid++];  
  33.   
  34.             for (i = 0; i < number; i++)  
  35.             {  
  36.                 numbers[right] = temp[right];  
  37.                 right--;  
  38.             }  
  39.         }  
  40.   
  41.         static public void SortMerge(int[] numbers, int left, int right)  
  42.         {  
  43.             int middle;  
  44.   
  45.             if (right > left)  
  46.             {  
  47.                 middle = (right + left) / 2;  
  48.                 SortMerge(numbers, left, middle);  
  49.                 SortMerge(numbers, (middle + 1), right);  
  50.   
  51.                 MainMerge(numbers, left, (middle + 1), right);  
  52.             }  
  53.         }  
  54.   
  55.         static void Main(string[] args)  
  56.           
  57.               
  58.             {  
  59.             Console.WriteLine("\nHi there! Welcome to Merge Sorting! Lets get started:"); //Welcome message  
  60.             Console.WriteLine("\n\nHow many numbers would you like to sort in the FIRST set of numbers? "); // Ask user to input the number of elements they want to sort.      
  61.             int totalElements = Convert.ToInt32(Console.ReadLine()); //Converts user input to integer   
  62.                 int[] elementsInArray = new int[totalElements]; // An array called "elementsInArray" is created and is assigned to a variable called "numOfelements"  
  63.                 for (int i = 0; i < totalElements; i++) // A loop is iterated to prompt user to enter their number until "elementsInArray" is equals to " totalElements"  
  64.                   
  65.             {  
  66.   
  67.                 Console.Write("\nPlease enter number #" + (i + 1).ToString() + "       >>>               "); // Prints on screen a promt that asks user to enter the (n)th element.   
  68.                 elementsInArray[i] = Convert.ToInt32(Console.ReadLine()); // User number entries are parsed into integers.  
  69.             }  
  70.             Console.Write("\n\nYour unsorted inputs in the array are: ");  //Print to users a message  
  71.             Console.Write("\n"); // Skips a line...  
  72.             for (int x = 0; x < totalElements; x++) // A loop is created so that all element are printed until total elements are reached.  
  73.             {  
  74.                 Console.Write(elementsInArray[x] + " ");  //Print users inputs back to the user in a non sorted manner.  
  75.                 Console.Write("\n");// Skips a line...  
  76.             }  
  77.   
  78.             {  
  79.                 Console.WriteLine("\n\nWooooHooooo! Your FIRST list of numbers has been MergeSorted using the recursive method:");//Print to users a message  
  80.                 SortMerge(elementsInArray, 0, totalElements - 1); //The SortMerge class is called to do the actual sort. (See class for detailed explanation)  
  81.                 for (int y = 0; y < totalElements; y++)  // a loop is created so that all elements will be printed until we reach "totalElements" value (user selection)  
  82.                 Console.WriteLine(elementsInArray[y]); //Prints out number in a sorted manner.  
  83.                 {  
  84.                     //Console.WriteLine("\nPress any key to continue...");  
  85.                 }  
  86.                 //Console.ReadKey(); //Await user input to avoid console from closing  
  87.   
  88.   
  89.                 //*******************************************************MERGE OPERATION 2************************************************************//  
  90.   
  91.                 Console.WriteLine("\nNow let's merge sort list two now:"); //Welcome message  
  92.                 Console.WriteLine("\n\nHow many numbers would you like to sort in this SECOND list? "); // Ask user to input the number of elements they want to sort.      
  93.                 int totalElementsTwo = Convert.ToInt32(Console.ReadLine()); //Converts user input to integer   
  94.                 int[] elementsInArrayTwo = new int[totalElementsTwo]; // An array called "elementsInArray" is created and is assigned to a variable called "numOfelements"  
  95.                 for (int i = 0; i < totalElementsTwo; i++) // A loop is iterated to prompt user to enter their number until "elementsInArray" is equals to " totalElements"  
  96.   
  97.                 {  
  98.   
  99.                     Console.Write("\nPlease enter number #" + (i + 1).ToString() + "       >>>               "); // Prints on screen a promt that asks user to enter the (n)th element.   
  100.                     elementsInArrayTwo[i] = Convert.ToInt32(Console.ReadLine()); // User number entries are parsed into integers.  
  101.                 }  
  102.                 Console.Write("\n\nYour unsorted inputs in the array are: ");  //Print to users a message  
  103.                 Console.Write("\n"); // Skips a line...  
  104.                 for (int p = 0; p < totalElementsTwo; p++) // A loop is created so that all element are printed until total elements are reached.  
  105.                 {  
  106.                     Console.Write(elementsInArrayTwo[p] + " ");  //Print users inputs back to the user in a non sorted manner.  
  107.                     Console.Write("\n");// Skips a line...  
  108.                 }  
  109.   
  110.                 {  
  111.                     Console.WriteLine("\nWow! Your SECOND list of numbers has been MergeSorted using the recursive method:");//Print to users a message  
  112.                     SortMerge(elementsInArrayTwo, 0, totalElementsTwo - 1); //The SortMerge class is called to do the actual sort. (See class for detailed explanation)  
  113.                     for (int q = 0; q < totalElementsTwo; q++)  // a loop is created so that all elements will be printed until we reach "totalElements" value (user selection)  
  114.                         Console.WriteLine(elementsInArrayTwo[q]); //Prints out number in a sorted manner.  
  115.                                       
  116.                     Console.WriteLine("\nThis is both List A and List B sorted separately:\n");//Print to users a message  
  117.                     SortMerge(elementsInArray, 0, totalElements - 1); //The SortMerge class is called to do the actual sort. (See class for detailed explanation)  
  118.                     {  
  119.                         Console.WriteLine("LIST A:");  
  120.                             }  
  121.                     for (int y = 0; y < totalElements; y++)  // a loop is created so that all elements will be printed until we reach "totalElements" value (user selection)  
  122.                         Console.WriteLine(elementsInArray[y]); //Prints out number in a sorted manner.  
  123.                     {  
  124.                         Console.WriteLine("\nLIST B:");  
  125.                     }  
  126.                     for (int q = 0; q < totalElementsTwo; q++)  // a loop is created so that all elements will be printed until we reach "totalElements" value (user selection)  
  127.                         Console.WriteLine(elementsInArrayTwo[q]); //Prints out number in a sorted manner.  
  128.                     {  
  129.                         Console.WriteLine("\nNow its time to sort both lists using insertion sort. \nPresss any key to Block sort your Above 2 Lists:");  
  130.                     }  
  131.                     Console.ReadKey(); //Await user input to avoid console from closing  
  132.   
  133.                   }                   
  134.             }  
  135.         }  
  136.     }  
  137. }  

Answers (1)