0% found this document useful (0 votes)
5 views51 pages

Merge Sort

The document discusses the complexities of bubble sort and merge sort algorithms. Bubble sort has a time complexity of O(n^2) due to the number of comparisons made, while merge sort employs a divide-and-conquer approach to sort elements efficiently. The basic steps of merge sort involve dividing the array, recursively sorting the sub-arrays, and merging them back together.

Uploaded by

pavanminam3
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views51 pages

Merge Sort

The document discusses the complexities of bubble sort and merge sort algorithms. Bubble sort has a time complexity of O(n^2) due to the number of comparisons made, while merge sort employs a divide-and-conquer approach to sort elements efficiently. The basic steps of merge sort involve dividing the array, recursively sorting the sub-arrays, and merging them back together.

Uploaded by

pavanminam3
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 51

Merge sort

Complexity of Bubble Sort


• The complexity of any sorting algorithm depends upon the number of
comparisons. In bubble sort, we have seen that there are N–1 passes in total.
In the first pass, N–1 comparisons are made to place the highest element in
its correct position. Then, in Pass 2, there are N–2 comparisons and the
second highest element is placed in its position. Therefore, to compute the
complexity of bubble sort, we need to calculate the total number of
comparisons. It can be given as:
f(n) = (n – 1) + (n – 2) + (n – 3) + ..... + 3 + 2 + 1
f(n) = n (n – 1)/2
f(n) = n2/2 + O(n) = O(n2)
• Therefore, the complexity of bubble sort algorithm is O(n2). It means the time
required to execute bubble sort is proportional to n2, where n is the total
number of elements in the array.
Merge Sort
• Merge sort is a sorting algorithm that uses the divide, conquer, and combine
algorithmic paradigm.
• Divide means partitioning the n-element array to be sorted into two sub-
arrays of n/2 elements. If
• A is an array containing zero or one element, then it is already sorted.
However, if there are more elements in the array, divide A into two sub-
arrays, A1 and A2, each containing about half of the elements of A.
• Conquer means sorting the two sub-arrays recursively using merge sort.
• Combine means merging the two sorted sub-arrays of size n/2 to produce the
sorted array of n elements.
Technique
• The basic steps of a merge sort algorithm are as follows:
• If the array is of length 0 or 1 and already sorted, then return.
• Otherwise, divide the unsorted array into two sub-arrays of about half the
size.
• Use merge sort algorithm recursively to sort each sub-array.
• Merge the two sub-arrays to form a single sorted list.
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23

23

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23

23 98

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

14

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

14 23

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

14 23 45

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

98 23 45 14

23 98 14 45

14 23 45 98

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14

23 98 14 45

14 23 45 98
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67

23 98 14 45

14 23 45 98
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67

23 98 14 45

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67

23 98 14 45 6

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67

23 98 14 45 6 67

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67

14 23 45 98
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33 42

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33 42 45

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Merge
98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

98 23 45 14 6 67 33 42

23 98 14 45 6 67 33 42

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98
98 23 45 14 6 67 33 42

6 14 23 33 42 45 67 98
Summary
• Divide the unsorted collection into two

• Until the sub-arrays only contain one element

• Then merge the sub-problem solutions together


Algorithm
Mergesort(Passed an array)
if array size > 1
Divide array in half
Call Mergesort on first half.
Call Mergesort on second half.
Merge two halves.

Merge(Passed two arrays)


Compare leading element in each array
Select lower and place in new array.
(If one input array is empty then place
remainder of other array in output array)
#include <stdio.h>
i = 0; j = 0; k = left;
// Merges two subarrays of a[].
void merge(int a[], int left, int mid, int right)
while (i < n1 && j < n2) {
{
if (L[i] <= R[j])
int i, j, k;
a[k++] = L[i++];
int n1 = mid - left + 1;
else
int n2 = right - mid;
a[k++] = R[j++];
}
int L[n1], R[n2]; // temporary arrays
// Copy remaining elements
for (i = 0; i < n1; i++)
while (i < n1)
L[i] = a[left + i];
a[k++] = L[i++];
for (j = 0; j < n2; j++)
while (j < n2)
R[j] = a[mid + 1 + j];
a[k++] = R[j++];
}
int main() {
int a[] = {38, 27, 43, 3, 9, 82, 10};
void mergeSort(int a[], int left, int right) {
int n = sizeof(a) / sizeof(a[0]);
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(a, 0, n - 1);
mergeSort(a, left, mid); // Sort first half
printf("Sorted array: ");
mergeSort(a, mid + 1, right); // Sort second half
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
merge(a, left, mid, right); // Merge the two halves
}
return 0;
}
Time Complexity for Merge Sort
If n=1, then we can get the solution directly.
So, T(n)=1 if n=1
If n>1, then the given array is divided into 2 parts where each array contains n/2 elements
and we need minimum ‘n’ comparisons for merging.
T(n)=2T(n/2) + n if n>1 (given array had n elements) is divided into 2 parts

Where each array Contains n/2 elements.


T(n)=2T(n/2)+n => 21 T(n/21)+1.n
T(n)=2[2T(n/4)+n/2]+n
=4T(n/4)+2n => 22T(n/22)+2.n
T(n)=4[2T(n/8)+n/4]+2n
=8T(n/8)+3n => 23T(n/23)+3.n
.
.
.
T(n)=2kT(n/2k)+k.n
Let 2k=n
Apply log on both sides then log 2k=log n
Klog 2=logn
k.1=logn
k=logn

T(n)=2kT(n/2k)+k.n
=n.T(n/n)+logn.n
=T(1)+n logn
=1+n logn
=n log n
So, the time complexity of Merge sort in all cases is O(nlogn)

You might also like