contents t i t s n e i n 1a o i d n f i e...

43
This file has been cleaned of potential threats. If you confirm that the file is coming from a trusted source, you can send the following SHA-256 hash value to your admin for the original file. 770db8900926c6eb95e2e6a4b3891b27f59a8eaa92dfe6a8930a3dc1c68162d8 To view the reconstructed contents, please SCROLL DOWN to next page.

Upload: others

Post on 15-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

This file has been cleaned of potential threats.

If you confirm that the file is coming from a trusted source, you can send the following SHA-256

hash value to your admin for the original file.

770db8900926c6eb95e2e6a4b3891b27f59a8eaa92dfe6a8930a3dc1c68162d8

To view the reconstructed contents, please SCROLL DOWN to next page.

Page 2: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Contents

1 Mergesort

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 1 / 16

Page 3: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort

Section outline

1 Mergesort

Merging two sorted arraysMerge sortComplexity of mergesort

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 2 / 16

Page 4: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 2 5 9 23 40 1 3 4 29 55 65 68 Second array

Merged sequence

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 5: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 2 5 9 23 40 3 4 29 55 65 68 Second array

Merged sequence 1

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 6: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 5 9 23 40 3 4 29 55 65 68 Second array

Merged sequence 1 2

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 7: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 5 9 23 40 4 29 55 65 68 Second array

Merged sequence 1 2 3

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 8: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 5 9 23 40 29 55 65 68 Second array

Merged sequence 1 2 3 4

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 9: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 9 23 40 29 55 65 68 Second array

Merged sequence 1 2 3 4 5

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 10: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 23 40 29 55 65 68 Second array

Merged sequence 1 2 3 4 5 9

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 11: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 40 29 55 65 68 Second array

Merged sequence 1 2 3 4 5 9 23

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 12: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 40 55 65 68 Second array

Merged sequence 1 2 3 4 5 9 23 29

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 13: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 55 65 68 Second array

Merged sequence 1 2 3 4 5 9 23 29 40

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 14: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 65 68 Second array

Merged sequence 1 2 3 4 5 9 23 29 40 55

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 15: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array 68 Second array

Merged sequence 1 2 3 4 5 9 23 29 40 55 65

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 16: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

First array Second array

Merged sequence 1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 3 / 16

Page 17: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Recursive definition of merging

M, N are number of elements in A and B, respectivelyArray indices start from 0Initial call: merge(A; N; 0; B; M; 0; C; 0) (1.1)

merge(A; N; i ; B; M; j ; C; k)

=

8>>>>>>>>>>>><>>>>>>>>>>>>:

if (i � N ^ j � M) then done (1:2)else if (i � N) then merge(A; N; i ; B; M; j + 1; C; k + 1);st C[k ] = B[j] (1:3)

else if (j � M) then merge(A; N; i + 1; B; M; j ; C; k + 1);st C[k ] = A[i] (1:4)

else if (A[i] � B[j]) then merge(A; N; i + 1; B; M; j ; C; k + 1);st C[k ] = A[i] (1:5)

otherwise merge(A; N; i ; B; M; j + 1; C; k + 1);st C[k ] = B[j] (1:6)

Definition is tail recursiveChittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 4 / 16

Page 18: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Recursive definition of merging

M, N are number of elements in A and B, respectivelyArray indices start from 0Initial call: merge(A; N; 0; B; M; 0; C; 0) (1.1)

merge(A; N; i ; B; M; j ; C; k)

=

8>>>>>>>>>>>><>>>>>>>>>>>>:

if (i � N ^ j � M) then done (1:2)else if (i � N) then merge(A; N; i ; B; M; j + 1; C; k + 1);st C[k ] = B[j] (1:3)

else if (j � M) then merge(A; N; i + 1; B; M; j ; C; k + 1);st C[k ] = A[i] (1:4)

else if (A[i] � B[j]) then merge(A; N; i + 1; B; M; j ; C; k + 1);st C[k ] = A[i] (1:5)

otherwise merge(A; N; i ; B; M; j + 1; C; k + 1);st C[k ] = B[j] (1:6)

Definition is tail recursiveChittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 4 / 16

Page 19: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Recursive function for merging

Editor:void merge(int A[], int N, int i,

int B[], int M, int j, int C[], int k) fif (i >= N && j >= M) return; // by clause (2)else if (i >= N) f // by clause (3)

C[k] = B[j];merge(A, N, i, B, M, j + 1, C , k + 1);

g else if (j >= M) f // by clause (4)C[k] = A[i];merge(A, N, i + 1, B, M, j, C , k + 1);

g else if (A[i] <= B[j]) f // by clause (5)C[k] = A[i];merge(A, N, i + 1, B, M, j, C , k + 1);

g else f // by clause (6)C[k] = B[j];merge(A, N, i, B, M, j + 1, C , k + 1);

gg

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 5 / 16

Page 20: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Testing the recursive merging

Editor:#include <stdio.h>void showIArr(int A[], int n) fint i;for (i=0; i<n; i++) printf("%d ", A[i]);printf("\n");

g

int main() fint A[]=f2, 5, 9, 23, 40g;int B[]=f1, 3, 4, 29, 55, 65, 68g;int C[12];printf("after merging "); showIArr(A,5);printf("and "); showIArr(B,7);merge(A, 5, 0, B, 7, 0, C , 0);showIArr(C,12);

return 0; g

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 6 / 16

Page 21: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Results of test

Shell:$ make mergeSort ; ./mergeSortcc mergeSort.c -o mergeSortafter merging 2 5 9 23 40and 1 3 4 29 55 65 681 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 7 / 16

Page 22: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Iterative function for merging

Editor:void mergeI(int A[], int N, int B[], int M, int C[]) f

int i=0, j=0, k=0; // by clause (1)do fif (i >= N && j >= M) break; // by clause (2)else if (i >= N) f // by clause (3)

C[k] = B[j]; j++, k++;g else if (j >= M) f // by clause (4)

C[k] = A[i]; i++; k++;g else if (A[i] <= B[j]) f // by clause (5)

C[k] = A[i]; i++; k++;g else f // by clause (6)

C[k] = B[j]; j++; k++;g

g while (1);g

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 8 / 16

Page 23: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Testing the iterative merging

Editor:void showIArr(int A[], int n) fint i;for (i=0; i<n; i++) printf("%d ", A[i]);printf("\n");

g

int main() fint A[]=f2, 5, 9, 23, 40g;int B[]=f1, 3, 4, 29, 55, 65, 68g;int C[12];printf("after merging "); showIArr(A,5);printf("and "); showIArr(B,7);printf ("by mergeR "); mergeR(A, 5, 0, B, 7, 0, C, 0);

showIArr(C,12);printf ("by mergeI "); mergeI(A, 5, B, 7, C);showIArr(C,12);

return 0; gChittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 9 / 16

Page 24: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Results of test

Shell:$ make mergeSort ; ./mergeSortcc mergeSort.c -o mergeSortafter merging 2 5 9 23 40and 1 3 4 29 55 65 68by mergeR 1 2 3 4 5 9 23 29 40 55 65 68by mergeI 1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 10 / 16

Page 25: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 26: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 27: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 28: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 29: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 30: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 31: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 32: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 33: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 34: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 35: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merging two sorted arrays

Merging two sorted arrays

Given array23 5 40 2 9 68 55 4 3 1 65 29

Split given array into two parts23 5 40 2 9 68 55 4 3 1 65 29

Sort first part2 5 9 23 40 68

Sort second part1 3 4 29 55 65

After sorting the two parts:First 2 5 9 23 40 68 1 3 4 29 55 65 SecondMerge the two sorted sequencesmerge(A, nA, B, nB, C)

After merging the two sorted parts (the required result)1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 11 / 16

Page 36: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Recursive definition of mergesort

N is the number of elements in AArray indices start from 0

mergeSort(A; N; C)

=

8>>>>>><>>>>>>:

if (N � 1) then done (2.1)let M = N=2 (2.2)do mergeSort(A; M; C) (2.3)do mergeSort(A + M; N �M; C) (2.4)do merge(A; M; A + M; N �M; C) (2.5)do copyBack(A; C; N) (2.6)

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 12 / 16

Page 37: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Recursive definition of mergesort

N is the number of elements in AArray indices start from 0

mergeSort(A; N; C)

=

8>>>>>><>>>>>>:

if (N � 1) then done (2.1)let M = N=2 (2.2)do mergeSort(A; M; C) (2.3)do mergeSort(A + M; N �M; C) (2.4)do merge(A; M; A + M; N �M; C) (2.5)do copyBack(A; C; N) (2.6)

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 12 / 16

Page 38: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Code for mergeSort

Editor:void mergeSort(int A[], int N, int C[]) fint M;if (N<=1) return; // by clause (1)M = N/2; // by clause (2)mergeSort(A, M, C); // by clause (3)mergeSort(A + M, N - M, C); // by clause (4)mergeI(A, M, A + M, N - M, C); // by clause (5)copyBack(A, C, N); // by clause (6)

g

void copyBack(int A[], int C[], int N) fint i;for (i=0;i<N;i++) A[i]=C[i];

g

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 13 / 16

Page 39: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Code for mergeSort

Editor:void mergeSort(int A[], int N, int C[]) fint M;if (N<=1) return; // by clause (1)M = N/2; // by clause (2)mergeSort(A, M, C); // by clause (3)mergeSort(A + M, N - M, C); // by clause (4)mergeI(A, M, A + M, N - M, C); // by clause (5)copyBack(A, C, N); // by clause (6)

g

void copyBack(int A[], int C[], int N) fint i;for (i=0;i<N;i++) A[i]=C[i];

g

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 13 / 16

Page 40: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Testing mergeSort

Editor:int main() fint A[]=f23,5,40,2,9,68,55,4,3,1,65,29g;int C[12];printf("after sorting by mergeSort ");mergeSort(A, 12, C);printf("\n"); showIArr(A,12);

return 0; g

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 14 / 16

Page 41: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Merge sort

Results of testing mergeSort

Shell:$ make mergeSort ; ./mergeSortcc mergeSort.c -o mergeSortafter sorting by mergeSort1 2 3 4 5 9 23 29 40 55 65 68

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 15 / 16

Page 42: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Complexity of mergesort

Complexity of mergesort

T (n) = T (n=2) + T (n=2) + �(n) = 2T (n=2) + �(n)T (0) = �(1)T (n) = �(n lg n)Given implementation requires extra storage space (equal to sizeof input)In-place version not trivial if O(N lg N) is to be preservedSimple in-place version to be studied nextMergesort was invented by John von Neumann in 1945

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 16 / 16

Page 43: Contents T I T S N E I N 1A O I D N F I E Hcse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs210032017s/...I N D I A N I N S T I T U T E O F T E C H N O L O G Y K H A R A G P U R 5 1 1

IND

IAN

INST

ITUTE

OF TECHNOLOGYKH

AR

AG

PUR

� �

5119

yog, km s� kOflm̂

Mergesort Complexity of mergesort

Complexity of mergesort

T (n) = T (n=2) + T (n=2) + �(n) = 2T (n=2) + �(n)T (0) = �(1)T (n) = �(n lg n)Given implementation requires extra storage space (equal to sizeof input)In-place version not trivial if O(N lg N) is to be preservedSimple in-place version to be studied nextMergesort was invented by John von Neumann in 1945

Chittaranjan Mandal (IIT Kharagpur) Algorithms January 23, 2017 16 / 16