美文网首页
算法笔记(15)| algorithm

算法笔记(15)| algorithm

作者: yzbkaka | 来源:发表于2019-08-27 09:53 被阅读0次

在使用algorithm库时,必须要添加using namespace std才可以使用。

1.max()、min()和abs()

max(x,y)和min(x,y)返回x、y中最大的数和最小的数,而且参数必须是两个。如果想要比较三个数之间的大小,则可以使用max(x,max(y,z))或min(x,min(y,z))。

abs()是返回整数x的绝对值,如果是要求浮点数的绝对值,则可以使用#include<math.h>下的fabs()函数。

2.swap()

swap(x,y)函数主要是用来交换x和y的值。

3.reverse()

reverse(it,it2)可以将数组在[it,it2)之间的元素或容器范围内的元素进行反转。

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int a[10] = {1,2,3,4,5};
    reverse(a,a+4);  //反转a[0]到a[3]
    for(int i=0;i<5;i++){
        printf("%d ",a[i]);
    } 
    return 0;
} 

//输出结果:4 3 2 1 5

需要注意的是,reverse()对于容器类型的反转和数组之间的反转是类似的。

4.next_permutation()

next_permutation()给出一个序列在全排列中的下一个序列。

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int a[3] = {1,2,3};
    do{  //输出全部的排列
        printf("%d%d%d\n",a[0],a[1],a[2]);
    }while(next_permutation(a,a+3));
    return 0;
} 

输出结果:
123
132
213
231
312
321

5.lower_bound()和upper_bound()

lower_boune(first,last,val)是用来寻找数组或容器的[first,last)范围内第一个值大于等于val的元素的位置,如果是数组,则返回该元素位置的指针;如果是容器,则返回该元素位置的迭代器。

upper_bound(first,last,val)是用来寻找数组或容器的[first,last)范围内第一个值大于val的元素的位置,如果是数组,则返回该元素位置的指针;如果是容器,则返回该元素位置的迭代器。

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int a[10] = {1,2,2,3,3,3,5,5,5};
    int* lowerPos;
    int* upperPos;
    //寻找-1
    lowerPos = lower_bound(a,a+10,-1);
    upperPos = upper_bound(a,a+10,-1);
    printf("%d %d\n",lowerPos-a,upperPos-a);  //输出下标 
    //寻找1
    lowerPos = lower_bound(a,a+10,1);
    upperPos = upper_bound(a,a+10,1);
    printf("%d %d\n",lowerPos-a,upperPos-a);
    return 0;
} 

输出结果:
0 0
0 1

相关文章

  • 算法笔记(15)| algorithm

    在使用algorithm库时,必须要添加using namespace std才可以使用。 1.max()、min...

  • EM 算法

    参考: 从最大似然到EM算法浅解 (EM算法)The EM Algorithm EM算法及其推广学习笔记 EM算法...

  • HMM学习最佳范例六:维特比算法4

    六、维特比算法(Viterbi Algorithm) 维特比算法定义(Viterbi algorithm defi...

  • HMM学习最佳范例五:前向算法3

    五、前向算法(Forward Algorithm) 前向算法定义(Forward algorithm defini...

  • 博客园转载

    启发式算法(Heuristic Algorithm) 启发式算法(Heuristic Algorithm)有不同的...

  • 2018-08-05

    CHAPTER 2: ALGORITHM ANALYSIS 第二章:算法分析 An algorithm is a ...

  • 动态规划cuttingRod

    算法导论上的。 naive的algorithm: top-down algorithm:

  • 算法(algorithm)

    心靈沒有放開小詩是寫不成的或者說既便寫成了裡頭也無詩意可言沒有詩意的詩當然不能算作詩就像沒有生的活不能算作活著没有...

  • 算法(Algorithm)

    其中的x它们是独立的: 计算新的样本x与之前训练好的模型对比,如果计算出来的p(x)很小,小于ε(如何选择在后面)...

  • 2018-06-12

    算法(algorithm) 递归(recursion) 嵌套(nested) ...

网友评论

      本文标题:算法笔记(15)| algorithm

      本文链接:https://www.haomeiwen.com/subject/gtdsectx.html