C++算法之 合并两个数组

    xiaoxiao2021-03-25  220

    C++算法之 合并两个数组

    1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素;

     

    因为题目当中已经有一个数组可以容的下两个数组的元素,所有不需要请求新的数组,但是要把比较后的数组从后面往前面放;

    比如有数组A实际5个元素,数组B实际5个元素,那么我们  让a[4]与b[4]比较,把大的那一个放到a[9];比如a[4]>b[4];那么把a[4]放到

    a[9];再让a[3]与b[4]比较,此时如果b[4]大,那么把b[4]放到a[8];再用b[3]与a[3]比较;依次类推,当A数组已经都遍历完,但是B数组

    还没有遍历完,说明剩余的B数组比A数组最小的还小,把剩余的B数组按序放到A数组即可:

    // MergeArray.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; void MergeArray(int a[], int aCount, int b[], int blen)//aCount为a数组实际(狭义)长度,blen为b数组实际长度 { int len = aCount + blen - 1;//合并数组的长度也就是a数组的广义长度 aCount--; blen--; while (aCount>=0 && blen>=0) { if (a[aCount] >= b[blen]) { a[len--] = a[aCount--]; } else { a[len--] = b[blen--]; } } while(blen >= 0) { a[len--] = b[blen--]; } } int _tmain(int argc, _TCHAR* argv[]) { int a[] = {2,4,6,8,10,0,0,0,0,0}; int b[] = {1,3,5,7,9}; MergeArray(a,5,b,5); for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) { cout< <<" "; } getchar(); return 0; }

     

     

    转载请注明原文地址: https://ju.6miu.com/read-10029.html

    最新回复(0)