[Algorithm] Merge sort – Merge Sort
Merge sort algorithm (Merge Sort) is one of the sorting algorithm or used. Nearly identical to Quick sort algorithm (Quick Sort) an arrangement by splitting the original array 2 half, but with Quick Sort element is used as a landmark comparison between Merge Sort is still clearly divided into, then sort each array “blend” 2 array rearranged.
Here is the C language code of the algorithm:
#include <stdio.h> /* xuat mang a tu vi tri l (left) den vi tri r (right)*/ void xuat(int a[], int l, int r) { int i; for (i = l; i <= r; i++){ printf("%d \t", a[i]); } printf("\n"); } /* tron 2 mang * mang a[l -> m] da sap xep * mang a[m+1 -> r] da sap xep * */ void tron(int a[], int l, int m, int r){ int i, length; int l_end = m - 1; i = l; length = r - l; int temp[length]; /* tron cac phan tu cua 2 mang con cua a*/ while(l <= l_end && m <= r) { if (a[l] <= a[m]) { temp[i++] = a[l++]; } else { temp[i++] = a[m++]; } } /* Neu mang dau tien chua het */ while(l <= l_end) { temp[i++] = a[l++]; } /* Neu mang thu 2 chua het*/ while(m <= r) { temp[i++] = a[m++]; } for (i = 0; i <= length; i++, r--) { a[r] = temp[r]; } } /* thuat toan sap xep tron*/ void sx_tron(int a[], int l, int r) { //xuat(a, l, r); int m; if(l < r) { m = (l + r) / 2; sx_tron(a, l, m); sx_tron(a, m + 1, r); tron(a, l, m + 1, r); } } int main(){ int n = 5; int a[] = {2, 6, 3, 8, 5}; sx_tron(a, 0, n-1); xuat(a, 0, n - 1); return 0; }
Welcome,
I'm not overly familiar passage:
int temp[length];
and places related to temp. Can you further explain the purpose and the meaning of it is not?
Thank you very much!
int temp[length];
Is to create an array named temp material to length length that you. And the temp below, eg temp[i ] mean values obtained in the ith position of the array temp ++.
Thank you. You're right that he Thien
faulty algorithm when n >= 12.
Thank you, I'll check back.