#include <stdio.h> void DisplayArray(int *pArray, int nLen) { for (int i = 0; i < nLen; ++i) { printf("array[%d] = %d/n", i, pArray[i]); } } // pArray1和pArray2是已经排好序的数组,要求将它们按照顺序合并到pArray中 // 排序之后的数组不会有重复的元素 void MergeArray(int *pArray1, int nLen1, int *pArray2, int nLen2, int *pArray) { int i, j, n; i = j = n = 0; while (i < nLen1 && j < nLen2) // 循环一直进行到拷贝完某一个数组的元素为止 { if (pArray1[i] < pArray2[j]) // 拷贝array1的元素 { pArray[n++] = pArray1[i++]; } else if (pArray1[i] > pArray2[j]) // 拷贝array2的元素 { pArray[n++] = pArray2[j++]; } else // 相等的元素拷贝 { pArray[n++] = pArray2[j++]; ++i; } } if (i == nLen1) // 如果array1已经被拷贝完毕就拷贝array2的元素 { while (j < nLen2) pArray[n++] = pArray2[j++]; } else // 如果array2已经被拷贝完毕就拷贝array1的元素 { while (i < nLen1) pArray[n++] = pArray1[i++]; } } int main() { int array1[] = {1, 4, 5, 7}; int array2[] = {2, 3, 6, 8}; int array3[8]; MergeArray(array1, 4, array2, 4, array3); printf("Merge Array:/n"); DisplayArray(array3, 8); return 1; }