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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/154774.html