[算法] 归并排序 – 合并排序
合并排序算法 (合并排序) 一个排序算法或使用. 几乎相同的 快速排序算法 (快速排序) 通过把原数组的安排 2 一半, 但与快速排序元素作为之间的合并排序具有里程碑意义的比较,仍然明显地分为, 然后排序每个阵列 “混合” 2 重排阵.
这里是该算法的C语言代码:
#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; }
欢迎,
我不是太熟悉的通道:
INT温度[长度];
和相关的临时场所. 可以进一步解释的目的和意义的是不?
非常感谢!
INT温度[长度];
是创建一个数组名为temp的材料,长度长,你. 和下面的温度, 如温度[我 ] 意味着在阵列温度的第i个位置获得的值+ +.
谢谢. 你说得对,他添
giải thuật bị lỗi khi mà n >= 12.
谢谢, mình sẽ kiểm tra lại.