algorithm介绍

1取绝对值的情况
函数返回值都是 数的返回值

1 整形
int abs(int a) //函数返回整形参数绝对值
2 复数
double cabs(struct complex znum) //返回复数znum的绝对值
3浮点双精度
double fabs(double x) //返回双精度参数x的绝对值
4长整型:
long labs(long n) //返回长整型参数n的绝对值
!!!注意使用绝对值函数的库都是
#include < cmatch>
有些编译器库函数是#include< cstdliib>和
#include< cmath>

2 max min函数
max(a,b)函数返回值是a b中大的数
min(a,b) 函数返回值是a b中小的数

#include<iostream>
#include<algorithm>
using namespace std;
int main(){int a=2,b=3;int c=1,d=7;cout<<max(a,b)<<" "<<min(c,d)<<endl;return 0;
}

3 swap交换函数
swap(a,b)函数返回值是交换a b的值

#include<iostream>
#include<algorithm>
using namespace std;
int main(){int a=2,b=3;swap(a,b);cout<<a<<" "<<b<<endl;return 0;
}

4 sort排序函数
格式 sort(a+m,a+n);
函数返回值是从小到大的数列

#include<iostream>
#include<algorithm>
using namespace std;
int main(){int a[4]={2,34,23,3};sort(a,a+4);for(int i=0;i<=3;i++){cout<<a[i]<<" "<<endl;}return 0;
}

5.reverse()函数
reverse(it, it+a)可以将数组指针在[it, it+a)之间的元素或容器的迭代器在[it, it2)范围内的元素进行反转
a=需要反转数的个数
整型数反转:

#include<bits/stdc++.h>
using namespace std;
int main()
{int a[10]={0,1,2,3,4,5,6,7,8,9};reverse(a,a+10);for(int i=0;i<10;i++)printf("%d ",a[i]);return 0;
}

字符串反转:

#include<bits/stdc++.h>
using namespace std;
int main()
{char a[10]={"abcdefghi"};reverse(a,a+9);puts(a);return 0;
}

6.next_permutation函数(全排列)
使用条件:排好序
next_permutation(t1,t1+a)可以对数组指针[t1,t1+a]之间的元素进行全排列,也就是"a=全排列的长度"
字符串全排列:

#include <iostream>
#include <algorithm>
using namespace std;
int n;  // n表示序列中数的个数
int a[10005];
int main()
{cin >> n;for (int i = 0; i < n; i++)cin >> a[i];cout<<endl; do{for (int i = 0; i < n; i++)  // 打印cout << a[i] << " ";cout << endl;}while (next_permutation(a, a + n)); // 当前序列不存在下一个排列时,函数返回false,否则返回true。return 0;
}

7 .fill()函数
fill(it,it+a)可以把数组或容器中的某一段区间赋为某个相同的值。和memset不同,这里的赋值可以是数组类型对应范围中的任意值。
a=赋值的个数

#include<bits/stdc++.h>
using namespace std;
int main()
{int a[5]={1,5,6,7,3};fill(a+0,a+5,999);//将a[0]~a[4]赋值3为999 for(int i=0;i<5;i++)printf("%d ",a[i]);return 0;
}

8 .lower_bound(begin,end,num)函数
使用条件:排好序
从数组的begin位置到end-1位置二分查找第一个大于等于num的数组,找到返回该数组地址,不存在则返回end。通过返回的地址减去起始地址begin,得到数字在数组中的下标。

#include<bits/stdc++.h>
using namespace std;
int main()
{int x;int a[5]={1,2,3,4,5};x=lower_bound(a,a+5,3)-a;printf("%d ",x);return 0;
}

! ! ! ! ! ! !注意:如果使用次函数查找某一个数,没有找到只会返回第一个比这个数大的数的下标,要是判断有没有找到,可以用返回下标的数和需要查找的数进行对比即可

9 .upper_bound(begin,end,num)函数
使用条件:排好序
从数组的begin位置到end-1位置二分查找第一个大于num的数组,找到返回该数组地址,不存在则返回end。通过返回的地址减去起始地址begin,得到数字在数组中的下标。
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{int x;int a[5]={1,2,3,4,5};x=upper_bound(a,a+5,4)-a;printf("%d ",x);return 0;
}

algorithm介绍相关推荐

  1. 布雷森汉姆直线演算法(Bresenham‘s line algorithm)介绍

    布雷森汉姆直线演算法(Bresenham's line algorithm)是用来描述两点间决定一条直线的算法,本人发现它可以用于确定栅格地图中两点间直线经过的栅格位置,它会算出一条线段在点阵图上最接 ...

  2. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm

    我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...

  3. 英文学术论文写作——模式识别方向(笔记)

    文章目录 文章结构 英文写作tips Latex小技巧 英文学术论文写作经验几乎为0,在老师和师兄们的帮助下,学习到了如何撰写文章.仅限于模式识别方向的. 文章结构 文章除去abstract,ackn ...

  4. 什么是高可用性_什么是高可用性| 第2部分

    什么是高可用性 高可用性系统的设计 (Design of a high availability system) Ironically, adding more components to the t ...

  5. 什么事消息队列的高可用性_什么是高可用性

    什么事消息队列的高可用性 什么是高可用性? (What Is High Availability?) High availability is a term often used in computi ...

  6. 我作为bertelsmann技术和深度学习纳米学位毕业生的经验

    One of the responsible things to do when a year is ending is to reflect on it. What accomplishments ...

  7. 深入解析最短路径算法

    转载自:http://blog.csdn.net/fengchaokobe/article/details/7478774    第一节 问题的提出及解决方法        所谓最短路径问题,可以说有 ...

  8. 最短路标号法python_最短路问题与标号算法(label correcting algorithm)研究(1) - 开篇介绍...

    作者:崔赞扬.李崇楠 指导老师:周学松教授 校对:邓发珩.周航.向柯玮 序言 本系列推文重在从算法基本原理.复杂度分析.优缺点.代码实现.算法扩展等方面科普Label Correcting Algor ...

  9. Wu反走样算法介绍(简单易懂) -Xiaolin Wu’s Algorithm

    目录 一.算法介绍 二.算法描述 三.算法总结 一.算法介绍 Wu反走样算法,可以将线条变得更平滑,即产生抗锯齿效果.示意图如下: 原图 经过Wu反走样算法改善后 原图 经过Wu反走样算法改善后 二. ...

最新文章

  1. 阿里云云服务器ECS上的Ubuntu16.04桌面安装及root账户登录错误处理
  2. 用ASP.NET AJAX框架扩展HTML Map控件
  3. ZOJ Problem Set - 3329 One Person Game
  4. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析
  5. C++工作笔记-3种方法对数据类型进行拆分(可用于各种协议)
  6. Javascript 运行上下文和作用域链
  7. P1352 没有上司的舞会[树形dp]
  8. nfs 跟rpcbind的关系
  9. ecplise和lomboz和tomcat配置
  10. javaweb项目电子商城购物系统课程设计任务书及成绩评定和毕业设计与实现
  11. 台达DVP PLC与西门子V20变频器通讯案例台达PLC西门子变频器通讯
  12. 数据库基本语言操作实验
  13. 高中知识复习与拓展——数列的求和
  14. elasticsearch从入门到入门系列(一)---简单介绍及安装
  15. JAVA日记之SpringAOP_XML配置与注解开发 ----喝最烈的酒.
  16. 时之扉手游如何在电脑上玩 时之扉手游模拟器教程
  17. 亲身经历3家1000人互联网公司,分享 25 条潜规则!
  18. 3. 云计算中的网络基础知识
  19. 在线计算机推理,UCAT考试——定量推理部分指南
  20. REXROTH力士乐放大器VT-VRPA1-151-1X/V0/0

热门文章

  1. metasploit meterpreter介绍
  2. Seurat-单细胞文献复现第二弹-01
  3. 教您正确理解时钟器件的抖动性能
  4. 隐私数据保护的两大途径
  5. 基于PHP的校园留言板系统(带后台管理)
  6. 合辑 | 必知的200+基础技术词汇,你知道多少?
  7. js 调用手机返回按钮
  8. 自动化控制面试问题整理
  9. Mac版微信内存飙升卡死解决办法
  10. JS打包工具rollup——完全入门指南