11
Merge Sort In this methods two vectors(array or part of array) are combined into a single sorted array.

Merge Sort technique

Embed Size (px)

DESCRIPTION

A most common sorting technique, applied in C.S

Citation preview

Page 1: Merge Sort technique

Merge Sort

In this methods two vectors(array or part of array) are combined into a single sorted array.

Page 2: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10C=

i=0 j=0

k=0

Page 3: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15C=

i=1 j=0

k=1

Page 4: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15 20C=

i=1 j=1

k=2

Page 5: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15 20 25C=

i=2 j=1

k=3

Page 6: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15 20 25 30C=

i=2j=2

k=3

Exit

Page 7: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15 20 25 30 40C=

i=2

k=4

Exit

Page 8: Merge Sort technique

Example:Consider two array:

10 20

40 50

A= M=4

B=15

25 30

N=3

10 15 20 25 30 40 50C=

i=3

k=5

Exit

Page 9: Merge Sort technique

Program:void simple_merge( int a[], int low, int mid, int high){ int i=low, j=mid+1, k=low, c[20]; while( i <= mid && j <= high) {

if(a[i] < a[j] ){ c[k] = a[i]; i = i++; k= k++;}else{ c[k] = a[j]; j = j++; k = k++;}

} while (i < = mid) {

c[k] = a[i]; i = i++;k= k++;

} while (j < = high) {

c[k] = a[j]; j = j++;k = k++;

} for (i= low; i<=high; i++)

a[i] = c[i];

}

Page 10: Merge Sort technique

Example:Consider single array:

10 20 40 50 15 25 30A=i = low j =

mid

j = high

Page 11: Merge Sort technique

Program:void merge_sort( int a[], int low, int high){ int mid; if( low < high) {

mid = (low + high) / 2;merge_sort(a, low, mid);merge_sort(a, mid + 1, high);simple_merge(a, low, mid, high);

}}