排序是将元素按升序(或)降序排列的过程。
C 语言提供了五种排序技术,如下 -
归并排序是分而治之方法。它将数组分成两半,递归地征服并合并(组合)。
让我们考虑下面给出的一个示例 -
采用一个未排序的数组并应用合并排序技术进行排序数组。
38, 27, 43, 3, 9, 82, 10
立即学习“C语言免费学习笔记(深入)”;

现在,通过排序组合数组,如下所示 -

以下是对元素进行排序的 C 程序使用合并排序技术 -
实时演示
#include <stdio.h>
#define max 10
int a[11] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44, 0 };
int b[10];
void merging(int low, int mid, int high) {
int l1, l2, i;
for(l1 = low, l2 = mid + 1, i = low; l1 <= mid && l2 <= high; i++) {
if(a[l1] <= a[l2])
b[i] = a[l1++];
else
b[i] = a[l2++];
}
while(l1 <= mid)
b[i++] = a[l1++];
while(l2 <= high)
b[i++] = a[l2++];
for(i = low; i <= high; i++)
a[i] = b[i];
}
void sort(int low, int high) {
int mid;
if(low < high) {
mid = (low + high) / 2;
sort(low, mid);
sort(mid+1, high);
merging(low, mid, high);
} else {
return;
}
}
int main() {
int i;
printf("List before sorting</p><p>");
for(i = 0; i <= max; i++)
printf("%d ", a[i]);
sort(0, max);
printf("</p><p>List after sorting</p><p>");
for(i = 0; i <= max; i++)
printf("%d ", a[i]);
}执行上述程序时,会产生以下输出 -
List before sorting 10 14 19 26 27 31 33 35 42 44 0 List after sorting 0 10 14 19 26 27 31 33 35 42 44
以上就是在C语言中解释归并排序技术的详细内容,更多请关注php中文网其它相关文章!
C语言怎么学习?C语言怎么入门?C语言在哪学?C语言怎么学才快?不用担心,这里为大家提供了C语言速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号