0% found this document useful (0 votes)
104 views

1 DAA - Merge Sort: 2 Problem Statement

The document discusses the merge sort algorithm. It splits a list of numbers into halves, recursively sorts each half, and then merges the two sorted sub-lists. It provides pseudocode for the merge sort algorithm, which recursively splits an array into halves and sorts them until single elements remain, then performs merging. The time complexity of merge sort is analyzed to be O(nlogn).

Uploaded by

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

1 DAA - Merge Sort: 2 Problem Statement

The document discusses the merge sort algorithm. It splits a list of numbers into halves, recursively sorts each half, and then merges the two sorted sub-lists. It provides pseudocode for the merge sort algorithm, which recursively splits an array into halves and sorts them until single elements remain, then performs merging. The time complexity of merge sort is analyzed to be O(nlogn).

Uploaded by

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

1 DAA - Merge Sort

Advertisements

Previous Page
Next Page

In this chapter, we will discuss merge sort and analyze its complexity.

2 Problem Statement
The problem of sorting a list of numbers lends itself immediately to a
divide-and-conquer strategy: split the list into two halves, recursively sort
each half, and then merge the two sorted sub-lists.

3 Solution
In this algorithm, the numbers are stored in an array numbers[].
Here, pand q represents the start and end index of a sub-array.
Algorithm: Merge-Sort (numbers[], p, r)
if p < r then
q = ⌊(p + q) / 2⌋
Merge-Sort (numbers[], p, q)
Merge-Sort (numbers[], q + 1, r)
Merge (numbers[], p, q, r)
Function: Merge (numbers[], p, q, r)
n1 = q – p + 1
n2 = r – q
declare leftnums[1…n1 + 1] and rightnums[1…n2 + 1] temporary arrays
for i = 1 to n1
leftnums[i] = numbers[p + i - 1]
for j = 1 to n2
rightnums[j] = numbers[q+ j]
leftnums[n1 + 1] = ∞
rightnums[n2 + 1] = ∞
i = 1
j = 1
for k = p to r
if leftnums[i] ≤ rightnums[j]
numbers[k] = leftnums[i]
i = i + 1
else
numbers[k] = rightnums[j]
j = j + 1

4 Analysis
Let us consider, the running time of Merge-Sort as T(n). Hence,

T(n)={ cifn⩽12xT(n2)+dxnotherwise where c and d are constants

Therefore, using this recurrence relation,

T(n)=2iT(n2i)+i.d.n
As, i=logn,T(n)=2lognT(n2logn)+logn.d.n
=c.n+d.n.logn
Therefore, T(n)=O(nlogn)

5 Example
In the following example, we have shown Merge-Sort algorithm step by
step. First, every iteration array is divided into two sub-arrays, until the
sub-array contains only one element. When these sub-arrays cannot be
divided further, then merge operations are performed.

You might also like