# partial_sort() function in C++ Algorithm

In this tutorial, we will learn how to perform the partial_sort() function in C++ with the corresponding code.
The partial_sort() function is same as the sort() function but the difference is sort() function is used for sorting entire range elements unlikely partial_sort() is used to sort subpart of it.

std::partial_sort:

It sorts the elements in the range [first, last). The elements from first are sorted in ascending order till the middle element. The remaining elements will be arranged randomly without any order .
The elements are compared using two methods:

1. Operator ‘<‘ for the first
2. comp for the second

## Sorting elements using the partial_sort() function.

1. comparing elements using <:

Syntax:

`void partial_sort (RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last);`

Parameter:

The first is a Random-Access iterator to the first element.
The last is a Random-Access iterator to the last element.
The middle is a Random-Access iterator, which is used to point the element in the range [first, last). It is used as the upper boundary to the elements which are fully sorted.

Below program is the example for Partial_sort() function using comparison operator “<“.

```#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v = {5,8,1,3,6,9,7,2,4};
vector<int>::iterator itr;
//displaying before sorting
cout<<"Before sorting: ";
for (itr = v.begin(); itr != v.end(); ++itr)
{
cout << *itr << " ";
}
// using default comparison (operator <):
partial_sort(v.begin(), v.begin() + 4, v.end());
// displaying after sorting
cout<<"\nAfter sorting:  ";
for (itr = v.begin(); itr != v.end(); ++itr)
{
cout << *itr << " ";
}
return 0;
}```

output:

```Before sorting: 5 8 1 3 6 9 7 2 4
After sorting: 1 2 3 4 8 9 7 6 5```

2. comparing using a function:

syntax:

`void partial_sort (RandomAccessIterator first, RandomAccessIterator middle,RandomAccessIterator last, Compare comp);`

parameter:

The comp is a comparison function object which takes two arguments. It returns true when it is satisfied and false when it is not satisfied.

Let us look into an example for partial_sort() function using the comp.

```#include <bits/stdc++.h>
using namespace std;
bool myfunction (int x,int y)
{
return (x<y);
}
int main ()
{
int a[] = {10,5,8,1,3,6,9,7,2,4};
vector<int> v (a, a+10);
//displaying before sorting
cout<<"before sorting:";
for (vector<int>::iterator itr=v.begin(); itr!=v.end(); ++itr)
cout << ' ' << *itr;
cout << '\n';
partial_sort (v.begin(), v.begin()+4, v.end(),myfunction);
//displaying after sorting
cout << "after sorting:";
for (vector<int>::iterator itr=v.begin(); itr!=v.end(); ++itr)
cout << ' ' << *itr;
cout << '\n';
return 0;
}```

Output:

```before sorting: 10 5 8 1 3 6 9 7 2 4
after sorting: 1 2 3 4 10 8 9 7 6 5```

Return value: none, because it has a void return type.

Exceptions:
It throws an exception if any of the comparisons, swaps, or the operations on iterators throws.
Note:If there are any invalid parameters then it causes undefined behavior.

Thus, we hope this tutorial helped you to use perform partial_sort() function in C++.

You may also visit:

Thank You.