21xrx.com
2024-09-20 05:08:48 Friday
登录
文章检索 我的文章 写文章
C++合并两个有序数组并按顺序输出元素
2023-07-02 04:49:44 深夜i     --     --
C++ 合并 有序数组 顺序输出

在C++中,合并两个有序数组并按顺序输出元素是一个常见的问题。这个问题的解决方案是将两个有序数组合并成一个有序数组,然后按顺序输出其中的元素。下面我们来看一下如何实现。

首先,我们需要定义两个有序数组和一个新的数组,用来存储合并后的结果。


int arr1[] = 3; // 第一个有序数组

int arr2[] = 8; // 第二个有序数组

int n1 = 5, n2 = 5; // 数组的长度

int res[10]; // 合并后的结果数组

接下来,我们使用两个指针分别指向两个有序数组的开头,并比较两个指针所指向的元素大小。如果第一个数组的元素小于第二个数组的元素,则将它存储到结果数组中,并将第一个数组的指针后移一位,否则将第二个数组的元素存储到结果数组中,并将第二个数组的指针后移一位。如下所示:


int i = 0, j = 0, k = 0; // 定义指针

while (i < n1 && j < n2) { // 当两个数组都还有元素时

  if (arr1[i] < arr2[j]) { // 第一个数组当前元素小于第二个数组的当前元素

    res[k++] = arr1[i++]; // 将第一个数组的当前元素存储到结果数组中,第一个数组的指针后移

  } else { // 第一个数组当前元素大于或等于第二个数组的当前元素

    res[k++] = arr2[j++]; // 将第二个数组的当前元素存储到结果数组中,第二个数组的指针后移

  }

}

最后,我们需要将剩余的元素存储到结果数组中。如果第一个数组还有剩余元素,则将剩余元素存储到结果数组中;如果第二个数组还有剩余元素,则将剩余元素存储到结果数组中。如下所示:


while (i < n1) { // 第一个数组还有剩余元素

  res[k++] = arr1[i++]; // 将剩余元素存储到结果数组中,第一个数组的指针后移

}

while (j < n2) { // 第二个数组还有剩余元素

  res[k++] = arr2[j++]; // 将剩余元素存储到结果数组中,第二个数组的指针后移

}

最后,我们将合并后的数组输出即可。

下面是完整的代码:


#include <iostream>

using namespace std;

int main() {

  int arr1[] = 5; // 第一个有序数组

  int arr2[] = 8; // 第二个有序数组

  int n1 = 5, n2 = 5; // 数组的长度

  int res[10]; // 合并后的结果数组

  

  int i = 0, j = 0, k = 0; // 定义指针

  while (i < n1 && j < n2) { // 当两个数组都还有元素时

    if (arr1[i] < arr2[j]) { // 第一个数组当前元素小于第二个数组的当前元素

      res[k++] = arr1[i++]; // 将第一个数组的当前元素存储到结果数组中,第一个数组的指针后移

    } else { // 第一个数组当前元素大于或等于第二个数组的当前元素

      res[k++] = arr2[j++]; // 将第二个数组的当前元素存储到结果数组中,第二个数组的指针后移

    }

  }

  while (i < n1) { // 第一个数组还有剩余元素

    res[k++] = arr1[i++]; // 将剩余元素存储到结果数组中,第一个数组的指针后移

  }

  while (j < n2) { // 第二个数组还有剩余元素

    res[k++] = arr2[j++]; // 将剩余元素存储到结果数组中,第二个数组的指针后移

  }

  

  for (int i = 0; i < k; i++) { // 输出合并后的结果数组

    cout << res[i] << " ";

  }

  cout << endl;

  

  return 0;

}

以上就是C++合并两个有序数组并按顺序输出元素的解决方案。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复