Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Objective To gain experience of using and combing different sorting algorithms:

ID: 3908517 • Letter: O

Question

Objective

To gain experience of using and combing different sorting algorithms: election sort, insertion sort, merge sort, and quick sort.

Project Description

1. For the following array x [10] = { 45, 20, 50, 30, 80, 10, 60, 70, 40, 90}, show the contents of x after the function call split Pos = split(x, 0, 9) is executed, and give the value of the array index splitPos (the first is the pivot). ( 10 points)

2. Modify quicksort() to incorporate this modification: In quicksort, we do not splitting sublists further when they have fewer than LOWER_BOUND elements for some constant LOWER_BOUND. When execution of the quicksort algorithm terminates, simply sort the whole list using insertion sort. (15 points)

3. Use the similar diagram as

for merge-sorting the following list of numbers ( 5 points):

8, 2, 9, 4, 5, 3, 1, 6

Upload your solutions as a text file for the assignment below.

Please type the solution, thank you!

42 9 7 4 2 4 7 9 1 3 5 8 1 2 3 4 5 789

Explanation / Answer

Solution:- The language is not very clear, i urge you to clarify the requirements, again in a more clear way. However, I'm writing the code for part c.) MERGE SORT as per the diagram.

===================CODE BEGINS====================

#include <stdlib.h>
#include <stdio.h>

void merge(int arr[], int l, int m, int r)
{
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;

int L[n1], R[n2];

for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1+ j];

i = 0;
j = 0;
k = l;
while (i < n1 && j < n2)
{
if (L[i] <= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1)
{
arr[k] = L[i];
i++;
k++;
}
while (j < n2)
{
arr[k] = R[j];
j++;
k++;
}
}

void mergeSort(int arr[], int l, int r)
{
if (l < r)
{
int m = l+(r-l)/2;

mergeSort(arr, l, m);
mergeSort(arr, m+1, r);

merge(arr, l, m, r);
}
}

void printArray(int A[], int size)
{
int i;
for (i=0; i < size; i++)
printf("%d ", A[i]);
printf(" ");
}

int main()
{
int arr[] = {45, 20, 50, 30, 80, 10, 60, 70, 40, 90};
int arr_size = sizeof(arr)/sizeof(arr[0]);

printf("Given array is ");
printArray(arr, arr_size);

mergeSort(arr, 0, arr_size - 1);

printf(" Sorted array is ");
printArray(arr, arr_size);
return 0;
}

=========CODE ENDS================

Note:- Please follow the instructions as i've requested. And, please upvote if it helped. Thanks!!