21xrx.com
2024-12-22 20:03:32 Sunday
登录
文章检索 我的文章 写文章
C++如何将数组分成两组
2023-07-06 01:24:33 深夜i     --     --
C++ 数组 分组 分割

在C++编程中,经常需要将一个数组分成两组。这个过程可以通过几种方法实现。下面将阐述两种常用的方法。

方法一:使用指针

在这种方法中,我们将使用指针来实现数组的分组。具体步骤如下:

1. 声明两个指针变量。一个指针变量指向数组的第一个元素,另一个指针变量指向数组的最后一个元素。

2. 然后,使用while循环来移动这两个指针变量。我们可以将其中一个指针向右移动,将另一个指针向左移动。直到两个指针变量相遇为止。

3. 在移动指针变量的过程中,我们可以比较指针变量所指向的元素的值。如果左边的元素的值小于等于右边的元素的值,则将左边的元素移到右边。否则,将右边的元素移到左边。

4. 最后,将数组分成的两组返回即可。

以下是代码实现:


#include <iostream>

using namespace std;

void divideArray(int arr[], int size) {

  int *left = &arr[0];

  int *right = &arr[size - 1];

  while (left < right) {

    if (*left <= *right) {

      left++;

    } else {

      swap(*left, *right);

      right--;

    }

  }

  cout << "第一组:";

  for (int i = 0; i <= right - arr; i++) {

    cout << arr[i] << " ";

  }

  cout << endl << "第二组:";

  for (int i = right - arr + 1; i < size; i++) {

    cout << arr[i] << " ";

  }

}

int main() {

  int arr[] = {10, 5, 8, 3, 4, 2, 7};

  int size = sizeof(arr) / sizeof(arr[0]);

  divideArray(arr, size);

  return 0;

}

方法二:使用STL库

在C++中,STL库提供了一个叫做partition的算法函数,该函数可实现数组的分组。具体步骤如下:

1. 需要包含 这两个头文件。

2. 然后,使用partition函数将数组按照条件分成两组。该函数接受三个参数:第一个参数是数组的起始地址,第二个参数是数组的结束地址,第三个参数是lambda表达式,用于指定分组条件。

3. 最后,将数组分成的两组返回即可。

以下是代码实现:


#include <iostream>

#include <algorithm>

#include <iterator>

using namespace std;

void divideArray(int arr[], int size) {

  auto it = partition(arr, arr + size, [](int n) { return n < 5; });

  cout << "第一组:";

  copy(arr, it, ostream_iterator<int>(cout, " "));

  cout << endl << "第二组:";

  copy(it, arr + size, ostream_iterator<int>(cout, " "));

}

int main() {

  int arr[] = {10, 5, 8, 3, 4, 2, 7};

  int size = sizeof(arr) / sizeof(arr[0]);

  divideArray(arr, size);

  return 0;

}

总结

以上就是两种常用的在C++中将数组分成两组的方法。每种方法都有其优点和缺点,具体使用时需要根据实际情况选择适合的方法。

  
  

评论区

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