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 789Explanation / 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!!
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.