Algorithm Sort Function - C++ Programming Tutorial
C++ Course / STL Algorithm / Algorithm Sort Function

Algorithm Sort Function

BLUF: Mastering Algorithm Sort Function is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: Algorithm Sort Function

C++ is renowned for its efficiency. Learn how Algorithm Sort Function enables low-level control and high-performance computing in the tutorial below.

C++ Algorithm sort

The sort function in C++ Algorithm organizes the elements within the range [first, last) in ascending order.

The elements are compared using the < operator in the initial version, and comp in the subsequent version.

Syntax

Example

default (1)	
	template <class RandomAccessIterator>
  	void sort (RandomAccessIterator first, RandomAccessIterator last);

custom (2)	
	template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

Parameter

An arbitrary access iterator pointing to the initial element within the range intended for sorting.

last : A random access iterator pointing to the element past the last one in the range that needs to undergo sorting.

The ```

include <iostream>

include <vector>

include <algorithm>

include <functional>

using namespace std;

void print(const vector <std::string>& v)

{

vector <string>::const_iterator i;

for(i = v.begin; i != v.end; i++)

{

cout << *i << " ";

}

cout << endl;

}

int main

{

vector <string> v;

// Push functional programming languages

v.push_back("Lisp");

v.push_back("C#");

v.push_back("Java");

v.push_back("Python");

v.push_back("C++");

v.push_back("Pascal");

v.push_back("Sql");

// sort without predicate

sort(v.begin, v.end);

cout << "Sorted list of functional programming languages - " << endl;

print(v);

// sort with predicate

sort(v.begin, v.end, std::greater<std::string>);

cout << "Reverse Sorted list of functional programming languages - " << endl;

print(v);

}

Example


## Return value

## Complexity

The average time complexity of a sorting algorithm is N*log₂(N), where N equals the value of last minus first.

## Data races

The elements within the range [first, last) undergo modification.

## Exceptions

This function will raise an exception if an exception is thrown during any element comparisons, element swaps, or iterator operations.

### Note: The invalid parameters cause an undefined behavior.

## Example 1

Let's explore a basic example to showcase the functionality of the sort() method:

include <iostream>

include <vector>

include <algorithm>

using namespace std;

int main

{

vector<int> v = {3, 1, 4, 2, 5};

cout<<"Before sorting: ";

for_each(v.begin, v.end, (int x) {

cout << x << " ";

});

sort(v.begin, v.end);

cout<<"\nAfter sorting: ";

for_each(v.begin, v.end, (int x) {

cout << x << " ";

});

return 0;

}

Example


Output:

Before sorting: 3 1 4 2 5

After sorting: 1 2 3 4 5

Example


## Example 2

Let's see another simple example:

include <iostream> // std::cout

include <algorithm> // std::sort

include <vector> // std::vector

using namespace std;

bool myfunction (int i,int j) { return (i<j); }

struct myclass {

bool operator (int i,int j) { return (i<j);}

} myobject;

int main {

int myints = {32,71,12,45,26,80,53,33};

vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33

// using default comparison (operator <):

sort (myvector.begin, myvector.begin+4); //(12 32 45 71)26 80 53 33

// using function as comp

sort (myvector.begin+4, myvector.end, myfunction); // 12 32 45 71(26 33 53 80)

// using object as comp

sort (myvector.begin, myvector.end, myobject); //(12 26 32 33 45 53 71 80)

// print out content:

cout << "myvector contains:";

for (vector<int>::iterator it=myvector.begin; it!=myvector.end; ++it)

cout << ' ' << *it;

cout << '\n';

return 0;

}

Example


Output:

myvector contains: 12 26 32 33 45 53 71 80

Example


## Example 3

Let's see another simple example:

include <iostream>

include <vector>

include <algorithm>

include <functional>

using namespace std;

void print(const vector <std::string>& v)

{

vector <string>::const_iterator i;

for(i = v.begin; i != v.end; i++)

{

cout << *i << " ";

}

cout << endl;

}

int main

{

vector <string> v;

// Push functional programming languages

v.push_back("Lisp");

v.push_back("C#");

v.push_back("Java");

v.push_back("Python");

v.push_back("C++");

v.push_back("Pascal");

v.push_back("Sql");

// sort without predicate

sort(v.begin, v.end);

cout << "Sorted list of functional programming languages - " << endl;

print(v);

// sort with predicate

sort(v.begin, v.end, std::greater<std::string>);

cout << "Reverse Sorted list of functional programming languages - " << endl;

print(v);

}

Example


Output:

Sorted list of functional programming languages -

C# C++ Java Lisp Pascal Python Sql

Reverse Sorted list of functional programming languages -

Sql Python Pascal Lisp Java C++ C#

Example


## Example 4

Let's see another simple example:

include <vector>

include <algorithm>

include <functional>

include <iostream>

using namespace std;

// return whether first element is greater than the second

bool userdefgreater(int elem1, int elem2)

{ return elem1 > elem2; }

int main

{

vector <int> vec1; // container

vector <int>::iterator Iter1; // iterator

int k;

for (k = 0; k <= 15; k++)

vec1.push_back(k);

random_shuffle(vec1.begin, vec1.end);

cout <<"Original random shuffle vector vec1 data:\n";

for (Iter1 = vec1.begin; Iter1 != vec1.end; Iter1++)

cout <<*Iter1<<" ";

cout <<endl;

sort(vec1.begin, vec1.end);

cout <<"\nSorted vector vec1 data:\n";

for (Iter1 = vec1.begin; Iter1 != vec1.end; Iter1++)

cout <<*Iter1<<" ";

cout <<endl;

// to sort in descending order, specify binary predicate

sort(vec1.begin, vec1.end, greater<int>);

cout <<"\nRe sorted (greater) vector vec1 data:\n";

for (Iter1 = vec1.begin; Iter1 != vec1.end; Iter1++)

cout <<*Iter1<<" ";

cout <<endl;

// a user-defined binary predicate can also be used

sort(vec1.begin, vec1.end, userdefgreater);

cout <<"\nUser defined re sorted vector vec1 data:\n";

for (Iter1 = vec1.begin; Iter1 != vec1.end; Iter1++)

cout <<*Iter1<<" ";

cout <<endl;

return 0;

}

Example


Output:

Original random shuffle vector vec1 data:

4 10 11 15 14 5 13 1 6 9 3 7 8 2 0 12

Sorted vector vec1 data:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Re sorted (greater) vector vec1 data:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

User defined re sorted vector vec1 data:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Example


Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience