Void main(). cout << " next_permutation(a, a + m);" << endl;
{
const int m = 3;
int a[m]={1, 4, 2}, b[m];
int i;
copy(a, a + m, b);
cout << " next_permutation(a, a + m);" << endl;
while (next_permutation(a, a + m))
{
for (i = 0; i < m; i++) cout << a [ i ] << " ";
cout << endl;
}
cout << " prev_permutation(b, b + m);" << endl;
while (prev_permutation(b, b + m))
{
for (i = 0; i < m; i++) cout << b [ i ] << " ";
cout << endl;
}
}
Результат роботи програми:
next_permutation(a, a + m):
2 1 4
2 4 1
4 1 2
4 2 1
prev_permutation(b, b + m):
1 2 4
Алгоритмиpartial_sort, partial_sort_copy.
Алгоритм partial_sort також виконує часткове сортування послідовності.
Після виконання алгоритму елементи від first до middle розташовуватимуться в такому ж порядку, як після повного сортування.
Алгоритм partial_sort_copy виконує ті ж дії з копією послідовності.
tempiate<class Ran>
void partial_sort(Ran first, Ran middle, Ran last);
template<class Ran, class Compare>
void partial_sort(Ran first, Ran middle,
Ran last, Compare comp);
template<class In, class Ran>
Ran partial_sort_copy(In first, In last,
Ran result_first, Ran result_last);
template<class In, class Ran, class Compare>
Ran partial_sort_copy(In first, In last,
Ran result_first, Ran result_last, Compare comp);
Часткове сортування економить час в тих випадках, коли нас цікавлять тільки декілька найбільших або найменших значень, наприклад, "гаряча десятка".
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
Дата добавления: 2014-12-26; просмотров: 620;