# C++ <list> - sort() Function

The C++ list::sort function is used to sort the elements of the list container. The comparison produces a strict weak ordering of the elements.

### Syntax

```//version 1
void sort();

//version 2
template <class Compare>
void sort (Compare comp);
```
```//version 1
void sort();

//version 2
template <class Compare>
void sort (Compare comp);
```

### Parameters

 `comp` Specify a binary predicate that takes two elements of the list as arguments and returns a bool. It follows the strict weak ordering to order the elements.

None.

### Time Complexity

Linearithmic i.e, Θ(nlog(n)).

### Example:

In the example below, the list::sort function is used to sort the elements of the given list called MyList.

```#include <iostream>
#include <list>
using namespace std;

int main (){
list<int> MyList{33, 7, 45, -12, 25, 75};
list<int>::iterator it;

cout<<"MyList contains: ";
for(it = MyList.begin(); it != MyList.end(); it++)
cout<<*it<<" ";

//sort elements of the list
MyList.sort();

cout<<"\nMyList contains: ";
for(it = MyList.begin(); it != MyList.end(); it++)
cout<<*it<<" ";

return 0;
}
```

The output of the above code will be:

```MyList contains: 33 7 45 -12 25 75
MyList contains: -12 7 25 33 45 75
```

### Example:

Here, the list is sorted by following: 1) alphabetically and 2) according to the length of the element. Consider the example below:

```#include <iostream>
#include <list>
using namespace std;

bool compare_length (string s1, string s2) {
return ( s1.length() < s2.length() );
}

int main () {
list<string> MyList{"Jo", "John", "Marry", "Kim", "Chandan"};
list<string>::iterator it;

cout<<"MyList contains: ";
for(it = MyList.begin(); it != MyList.end(); it++)
cout<<*it<<" ";

//sort elements of the list alphabetically
MyList.sort();

cout<<"\nMyList contains: ";
for(it = MyList.begin(); it != MyList.end(); it++)
cout<<*it<<" ";

//sort elements of the list according
//to length of the element
MyList.sort(compare_length);

cout<<"\nMyList contains: ";
for(it = MyList.begin(); it != MyList.end(); it++)
cout<<*it<<" ";

return 0;
}
```

The output of the above code will be:

```MyList contains: Jo John Marry Kim Chandan
MyList contains: Chandan Jo John Kim Marry
MyList contains: Jo Kim John Marry Chandan
```

❮ C++ <list> Library

5