C++ sort排序函数用法

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132002.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 京东云 服务器_京东云服务器免费体验

    京东云 服务器_京东云服务器免费体验哈哈哈~又来“打广告”了~~~一开始用着华为云服务不错,只不过因为自己一时粗心忘了密码,找回密码又比较麻烦,所以从网上搜免费的云服务器。果然发现了京东云……(虽然是第一次见),不过确实方便好用。好处如下:*实名认证方式就比较简单,不需要拿着身份证照来照去了,审核基本是秒过*功能操作比较简单*免费半年使用权(主要是这个原因)注册账号领取免费套餐注册账号:1、进入官网,直接

    2022年10月14日
  • bios设置pcie通道_PCI LAN

    bios设置pcie通道_PCI LANPCIewithlspciPCIeWidth#lspci-s81:00.0-vvv|grepWidthLnkCap:Port#0,Speed8GT/s,Widthx16,ASPMnotsupported,ExitLatencyL0sunlimited,L1unlimited…

  • eclipse配置SVN_eclipse导入svn项目

    eclipse配置SVN_eclipse导入svn项目当我们使用EclipseSVN插件进行团队合作开发时,有些时候我们可能想要将某个文件的本地版本与服务器上的最新版本(或历史版本)进行对比,以便于查找出改动的不同之处。1、与SVN服务器上的最新版本进行对比。右键单击指定的项目,在弹出的关联菜单中点击【Team】->【SynchronizewithRepository】,此时Eclipse将进入同步视图。在团队同步视图中,点击左侧任意文件,

    2022年10月14日
  • 解决 安装android-sdk时SDK Manager.exe 闪退的问题「建议收藏」

    解决 安装android-sdk时SDK Manager.exe 闪退的问题「建议收藏」好不容易从http://tools.android-studio.org/index.php/sdk 下载下来最新版本的sdk,解压后运行SDKManager.exe竟然闪退,管理员运行

  • 语义分割(Semantic Segmentation)方法「建议收藏」

    语义分割(Semantic Segmentation)方法「建议收藏」翻译来自:https://gist.github.com/khanhnamle1994/e2ff59ddca93c0205ac4e566d40b5e88语义分割方面的资源:https://github.com/mrgloom/awesome-semantic-segmentation1.什么是语义分割语义分割是当今计算机视觉领域的关键问题之一。从宏观上看,语义分割是一项高层次的任务,…

  • Javascript贪食蛇小游戏

    试玩:http://hovertree.com/game/9/贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长。只要蛇头碰到屏幕四周,或者碰到自己的身子,

    2021年12月22日

发表回复

您的电子邮箱地址不会被公开。

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