在线计算网 · 发布于 2024-04-06 13:55:37 · 已经有68人使用
void merge(int arr[], int l, int m, int r) { int i, j, k; int n1 = m - l + 1; int n2 = r - m; // 创建临时数组 int L[n1], R[n2]; // 复制数据到临时数组中 for (i = 0; i < n1; i++) L[i] = arr[l + i]; for (j = 0; j < n2; j++) R[j] = arr[m + 1 + j]; // 合并临时数组到原数组中 i = 0; // 初始索引第一个子数组 j = 0; // 初始索引第二个子数组 k = l; // 初始索引合并的子数组 while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } // 复制L[]的剩余元素 while (i < n1) { arr[k] = L[i]; i++; k++; } // 复制R[]的剩余元素 while (j < n2) { arr[k] = R[j]; j++; k++; } }### 使用merge函数的示例 以下是使用merge函数进行数组合并的示例:
int main() { int arr[] = {1, 3, 5, 7, 2, 4, 6, 8}; int arr_size = sizeof(arr) / sizeof(arr[0]); merge(arr, 0, 3, arr_size - 1); // 打印合并后的数组 for (int i = 0; i < arr_size; i++) printf("%d ", arr[i]); return 0; }执行上述代码,将输出排序后的数组:1 2 3 4 5 6 7 8。 ### 结语 merge函数在C语言中的使用非常广泛,特别是在排序和数据处理方面。通过理解其原理和实现方式,可以更好地掌握这一工具,为编程带来便利。
590359次四川话女声语音合成助手
104990次生辰八字计算器
73208次4x4四阶矩阵行列式计算器
67027次情侣恋爱日期天数计算器
62972次各种金属材料重量在线计算器
54996次分贝在线计算器
51473次任意N次方计算器
49798次经纬度分秒格式在线转换为十进制
49596次卡方检验P值在线计算器
43010次三角函数计算器