Upload
akshaysuresh
View
5
Download
0
Embed Size (px)
DESCRIPTION
A most common sorting technique, applied in C.S
Citation preview
Merge Sort
In this methods two vectors(array or part of array) are combined into a single sorted array.
Example:Consider two array:
10 20
40 50
A= M=4
B=15
25 30
N=3
10C=
i=0 j=0
k=0
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
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
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
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
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
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
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];
}
Example:Consider single array:
10 20 40 50 15 25 30A=i = low j =
mid
j = high
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);
}}