【C语言教程】sort排序函数用法详解

零 C语言教程评论69字数 1793阅读5分58秒阅读模式

所需工具:

C++

聪明的大脑文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

勤劳的双手文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途,未经允许禁止转载/分享等文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

教程如下

最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

用法

1、sort函数可以三个参数也可以两个参数,必须的头文件#include < algorithm>和using namespace std;
2、它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n)文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

3、Sort函数有三个参数:(第三个参数可不写)文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

(1)第一个是要排序的数组的起始地址。文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

(2)第二个是结束的地址(最后一位要排序的地址)文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12443.html

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

两个参数用法

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

输出结果是升序排列。(两个参数的sort默认升序排序)

三个参数

[php]
// sort algorithm example
#include &lt;iostream> // std::cout
#include &lt;algorithm> // std::sort
#include &lt;vector> // std::vector

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

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

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

// using default comparison (operator &lt;):
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 &lt;&lt; "myvector contains:";
for (std::vector&lt;int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)//输出
std::cout &lt;&lt; ' ' &lt;&lt; *it;
std::cout &lt;&lt; '\n';

return 0;
}
[/php]

string 使用反向迭代器来完成逆序排列

[php]
#include &lt;iostream>
using namespace std;
int main()
{
string str("cvicses");
string s(str.rbegin(),str.rend());
cout &lt;&lt; s &lt;&lt;endl;
return 0;
}
//输出:sescivc
[/php]

 

 

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/cyyjc/12443.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论