stable_sort()
稳定排序算法,相同值不改变位置
#include <iostream>
#include <algorithm>
using namespace std;
int a[5]={
3,5,4,2,6};
int main()
{
stable_sort(a, a+5);
for (int i=0; i<5; i++)
cout<<a[i]<<" ";
return 0;
}
|
|
reverse(begin, end) |
反转一个区间的元素, 前闭后开区间 |
|
|
swap(&num1, &num2) |
交换两个数的位置 |
|
|
min(num1, num2)、min_element(begin, end) |
返回两个数或一个区间内的最小的数 |
max(num1, num2)、max_element(begin, end) |
返回两个数或一个区间内的最大的数 |
|
|
__gcd(num1, num2) |
求两个数的最大公约数 |
|
|
lower_bound() |
返回指向第一个大于等于给定值的元素的迭代器 |
upper_bound() |
返回指向第一个大于给定值的元素的迭代器 |
next_permutation用于求当前排列的下一个排列情况
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int a[5]={
1,2,3,4};
for (int i=1; i<=24; i++){
printf("%d%d%d%d\n", a[0],a[1],a[2],a[3]);
next_permutation(a, a+4);
}
do{
for (int i=0; i<4; i++)
printf("%d", a[i]);
printf("\n");
}while (next_permutation(a, a+4));
return 0;
}
unique()被包含在头文件algorithm中
作用是去除数组中相邻的重复元素(必须相邻),一般排序后使用。返回结果是去重后最后一个数的地址。
需要注意的是,这里的去重只是把后面的元素替换了前面重复的元素,它并没有把后面的元素的空间删除掉。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[10]={
1,2,3,4,4,5,6,4,3,5};
int main()
{
for (int i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n\n");
sort(a, a+10);
for (int i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n\n");
int n=unique(a, a+10)-a;
for (int i=0; i<n; i++)
printf("%d ", a[i]);
printf("\n\n");
for (int i=0; i<10; i++)
printf("%d ", a[i]);
return 0;
}