# Use the generic partition algorithms: Partition array1, putting numbers greater than 4 first, followed by those less than or equal to 4 : array algorithms « STL Introduction « C++ Tutorial

```#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <iterator>
using namespace std;

bool above40(int n) { return (n > 4); }

int main()
{
const int N = 7;
int array0[N] = {5, 3, 1, 7, 6, 4, 2};
int array1[N];

copy(&array0[0], &array0[N], &array1[0]);

ostream_iterator<int> out(cout, " ");

cout << "Original sequence:                 ";
copy(&array1[0], &array1[N], out); cout << endl;

int* split = partition(&array1[0], &array1[N], above40);

cout << "Result of (unstable) partitioning: ";
copy(&array1[0], split, out); cout << "| ";
copy(split, &array1[N], out); cout << endl;

return 0;
}
```
```Original sequence:                 5 3 1 7 6 4 2
Result of (unstable) partitioning: 5 6 7 | 1 3 4 2```
 14.1.array algorithms 14.1.1. Using the STL generic reverse algorithm with an array 14.1.2. Using reverse_copy to copy the array reversely 14.1.3. Use random_shuffle algorithms with array 14.1.4. Illustrating the generic inner_product algorithm with predicate 14.1.5. Illustrating the generic adjacent_difference algorithm 14.1.6. Illustrating the generic partial_sum algorithm 14.1.7. Use the generic partition algorithms: Partition array1, putting numbers greater than 4 first, followed by those less than or equal to 4 14.1.8. Using function templates to get the max and min value in an array