c++中的排序函数Sort的具体用法(vb中sort函数怎么用)

最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数用法1、sort函数可以三个参数也可以两个参数,必须的头文件#include和usingnamespacestd;2、它使用的排序方法是类似于快排的方法,时间复

大家好,又见面了,我是你们的朋友全栈君。

最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数

用法

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;
}

输出结果是升序排列。(两个参数的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;
}

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/129695.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月14日 下午1:20
下一篇 2022年4月14日 下午1:20


相关推荐

  • 【毕业设计】图像拼接算法 – 机器视觉 python OpenCV

    【毕业设计】图像拼接算法 – 机器视觉 python OpenCVHi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高 难度也越来越大 毕业设计耗费时间 耗费精力 甚至有些题目即使是专业的老师或者硕士生也需要很长时间 所以一旦发现问题 一定要提前准备 避免到后面措手不及 草草了事 为了大家能够顺利以及最少的精力通过毕设 学长分享优质毕业设计项目 今天要分享的新项目是 基于机器视觉的图像拼接算法 学长这里给一个题目综合评分 每项满分 5 分 难度系数 4 分工作量 4 分创新点 3 分

    2026年3月16日
    2
  • win10中anaconda安装tensorflow时报错Traceback (most recent call last): File “E:\Anaconda3\lib\site-packag

    win10中anaconda安装tensorflow时报错Traceback (most recent call last): File “E:\Anaconda3\lib\site-packagwindows 系统 anaconda 安装 tensorflow 时报错解决办法 报错 Traceback mostrecentca File E Anaconda3 lib site packages pip vendor urllib3 response py line360 in error catcheryield E Anaconda3

    2026年3月19日
    2
  • VeryCD下载服务关闭 CEO感叹7年心血说停就停

    VeryCD下载服务关闭 CEO感叹7年心血说停就停
    [导读]VeryCD创始人黄一孟在腾讯微博透露心声:7年的心血和积累,说关就要关,说停就要停。没有人能甘心,但也早料到这一刻会突然到来。
     

     
    腾讯科技讯(乐天)1月23日消息,曾因广电总局清理非法视听节目服务网站面临关闭的下载网站VeryCD再遭劫难。腾讯微博网友近日爆料,VeryCD音乐频道已关闭,同时页面上没任何下载地址对外提供。更有消息称VeryCD可能关闭。
    据VeryCD管理员透露,VeryCD将开始全面转型到校内网,开心网这样的

    2022年8月10日
    22
  • ubuntu 使用总结

    ubuntu 使用总结

    2021年4月26日
    258
  • meshgrid用法「建议收藏」

    meshgrid用法「建议收藏」1、meshgrid函数用两个坐标轴上的点在平面上画格。用法:  [X,Y]=meshgrid(x,y)  [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的  [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图    例如例题1:  x=-3:1:3;y=-2:1:2;  [X

    2022年6月10日
    66
  • eclipse添加logcat显示_eclipse的logcat不见了

    今天打开eclipse调了一会程序,突然发现logcat不见了,只有Console等,找了半天没找到,最后还是苦命的发现了,如下.Window ……Show View……Other…会出现如下对话框:选择LogCat后,eclipse就能正常查看LogCat的输出了。

    2022年3月9日
    44

发表回复

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

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