sort
Sorts all elements
Definition
The sort() algorithm is defined in the standard header <algorithm> and in the nonstandard backward-compatibility header <algo.h>.
Interface
#include <algorithm>
template < class RandomAccessIterator >
void sort(
RandomAccessIterator first,
RandomAccessIterator last
);
template < class RandomAccessIterator, class Predicate >
void sort(
RandomAccessIterator first,
RandomAccessIterator last,
Predicate comp
);Parameters:
| Parameter | Description |
| first | A random-access iterator addressing the position of the first element in the range to be sorted |
| last | A random-access iterator addressing the position one past the final element in the range to be sorted |
| comp | User-defined predicate function object that defines the comparison criterion to be satisfied by successive elements in the ordering. A binary predicate takes two arguments and returns true when satisfied and false when not satisfied |
Description
Sort function sorts the elements in the range [first, last) in ascending order.
The first version uses operator< to compare the elements, the second version uses the given comparison function comp.
Return Value
None.
Complexity
The average of a sort complexity is O(N log N), where N = last - first.
References
Example 1
The following example demonstrates the use of sort().
#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;
}Output:
Original random shuffle vector vec1 data:
12 1 9 2 0 11 7 3 4 15 8 5 14 13 10 6
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
See Also
- http://www.codecogs.com/reference/computing/stl/algorithms/sorting/partial_sort.php"partial_sort"
- http://www.codecogs.com/reference/computing/stl/algorithms/sorting/partial_sort_copy.php"partial_sort_copy"
- http://www.codecogs.com/reference/computing/stl/algorithms/sorting/stable_sort.php"stable_sort"