补充排序函数(更快速)

补充排序函数(更快速)

1、sort函数可以三个参数也可以两个参数,必须的头文件#include < algorithm>和using namespace std;
2、它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)

3、Sort函数有三个参数:(第三个参数可不写)

(1)第一个是要排序的数组的起始地址。

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

两个参数用法

#include <iostream>
#include <algorithm>
int main()
{
 int a[20]={2,4,1,23,5,76,0,43,24,65},i;
 for(i=0;i<20;i++)
  cout<<a[i]<<endl;
 sort(a,a+20);
 for(i=0;i<20;i++)
 cout<<a[i]<<endl;
 return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
输出结果是升序排列。(两个参数的sort默认升序排序)

三个参数
// sort algorithm example

#include <iostream>     // std::cout
#include <algorithm>    // std::sort
#include <vector>       // std::vector

bool myfunction (int i,int j) { return (i<j); }//升序排列
bool myfunction2 (int i,int j) { return (i>j); }//降序排列

struct myclass {
  bool operator() (int i,int j) { return (i<j);}
} myobject;

int main () {
    int myints[8] = {32,71,12,45,26,80,53,33};
  std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33

  // using default comparison (operator <):
  std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

  // using function as comp
  std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)
    //std::sort (myints,myints+8,myfunction);不用vector的用法

  // using object as comp
  std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

  // print out content:
  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)//输出
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
string 使用反向迭代器来完成逆序排列

#include <iostream>
using namespace std;
int main()
{
     string str("cvicses");
     string s(str.rbegin(),str.rend());
     cout << s <<endl;
     return 0;
}

//输出:sescivc

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114925.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ftp登陆命令「建议收藏」

    ftp登陆命令「建议收藏」 一、shelll示例:cd/PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)ftp-niv&amp;lt;&amp;lt;-EOFopenIP_ADDRESSuserUSERNAMEPASSWORDascii(orbin)put*(orget)byeEOF下面详细讲解以下这段代码:&amp;nbsp;&amp;nbsp;&amp;nb…

    2022年9月21日
    0
  • 西门子plc485通讯控制变频器_西门子300plc波特率怎么改

    西门子plc485通讯控制变频器_西门子300plc波特率怎么改品牌:Endaic型号:CHNet-S7300MD产品简介CHNetS7-S7300MD用于西门子S7-200/SMARTS7-200/S7-300/S7-400/西门子数控840D、840DSL等PLC的以太网数据采集,非常方便构建生产管理系统。CHNetS7-S7300MD不占用PLC编程口,即编程软件/上位机软件通过以太网对PLC数据监控和采集的同时,触摸屏可以通过扩展RS485口与PLC进行通讯。CHNetS7-S7300MD支持工控领域内绝大多数SCADA软件,支持西门子S7TCP.

    2022年10月8日
    0
  • Q学习和深度Q学习(DQN)论文笔记「建议收藏」

    Q学习和深度Q学习(DQN)论文笔记「建议收藏」Q学习(Q-learning)强化学习中有个很重要的递归关系,贝尔曼方程(BellmanEquation):Qπ(st,at)=E[r+γE[Qπ(st+1,at+1)]]Q^\pi(s_t,a_t)=E[r+\gammaE[Q^\pi(s_{t+1},a_{t+1})]]Qπ(st​,at​)=E[r+γE[Qπ(st+1​,at+1​)]]这个公式实际上也揭露了状态的马尔科夫性质,也…

    2022年10月3日
    0
  • quartus ii12.1安装教程_ghost手动安装教程

    quartus ii12.1安装教程_ghost手动安装教程安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。1.鼠标右击【QuartusII11.0】压缩包选择【解压到QuartusII11.0】。2.双击打开解压后的【QuartusII11.0】文件夹。3.双击打开【Quartus】文件夹。4.鼠标右击【11.0_quartus_windows.exe】选择【以管理员身份运行】。5.点击【Install】。6.解压中。7.勾选【AllowAlter…

    2022年10月15日
    0
  • 三极管导通条件[通俗易懂]

    三极管导通条件[通俗易懂]1、对于NPN型三极管来说,其功能是用基极B极小的电流去引出集电极C巨大的电流,Ibe电流大小由Ib基极电流决定。2、三极管相当于两个二极管组成,所以只要PN结压差大于0.7V,有电流有就导通了3、NPN型:截止态:Ube<0.7V放大态:Ube>0.7V,Uc>Ub>Ue,集电极处于正向压差,基极处于反向压差PNP:截止态:Ueb<0.7V…

    2022年6月30日
    87
  • CSDN第一篇博客日记

    CSDN第一篇博客日记CSDN注册很久了,但一直都没来弄,因为开始刚刚学C和C++,许多的东西进来看不懂,觉得这还不是我的一片天地,而转眼又过了两年了,现在的我已经是大二快读完了,我学的是信息与计算科学专业,学了C和C++,现在正在学习数据结构,感觉有点难,看不懂~ 有个时候碰到问题总是自己不能解决,在QQ问问里和百度里搜吧答案找一个只能是一个,过后又忘记了,想把自己的问题以及学习过程记录下来,也想把自己得到的好的解

    2022年4月29日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号