STL sort函数

转载 2018年04月15日 16:00:29
C++sort()函数的用法
近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧!
(一)为什么要用c++标准库里的排序函数
Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
(二)c++标准库里的排序函数的使用方法
I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
Sort函数使用模板:
Sort(start,end,,排序方法)
下面就具体使用sort()函数结合对数组里的十个数进行排序做一个说明!
例一:sort函数没有第三个参数,实现的是从小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
 int a[10]={9,6,3,8,5,2,7,4,1,0};
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
sort(a,a+10);
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}
例二
通过上面的例子,会产生疑问:要实现从大到小的排序肿么办?
 这就如前文所说需要在sort()函数里的第三个参数里做文章了,告诉程序我要从大到小排序!
需要加入一个比较函数 complare(),此函数的实现过程是这样的
bool complare(int a,int b)
{
 return a>b;
}
这就是告诉程序要实现从大到小的排序的方法!
#include<iostream>
#include<algorithm>
using namespace std;
bool complare(int a,int b)
{
 return a>b;
}
int main()
{
 int a[10]={9,6,3,8,5,2,7,4,1,0};
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,//这是规则
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}
例三:
通过上面例一、二的方法虽然实现了从大到小和从大到小的排序,这样做还是有点麻烦,因为还需要自己编写告诉程序进行何种排序的函数,c++标准库强大的功能完全可以解决这种麻烦。
Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序
结合本例子,这样的就可以完成你想要的任何一种排序原则了

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
 int a[10]={9,6,3,8,5,2,7,4,1,0};
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
sort(a,a+10,less<int>());
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}



#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
 int a[10]={9,6,3,8,5,2,7,4,1,0};
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 sort(a,a+10,greater<int>());
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}



例四:利用sort函数还可以实现对字符的排序,排序方法大同小异,下面就把程序范例展示一下
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
 char a[11]="asdfghjklk";
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 sort(a,a+10,greater<char>());
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}

stl中sort函数详解

1. sort 函数的形式: sort(first_pointer,first_pointer+n,cmp)         函数的第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是...
  • meetings
  • meetings
  • 2015-06-23 13:18:58
  • 1202

STL sort函数简介

做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复...
  • s030501408
  • s030501408
  • 2010-02-26 15:02:00
  • 4656

STL之sort函数的使用方法

STL封装了一个排序算法,该算法对应的头文件为#include,我们可以根据需要对一个数组进行排序或者降序。...
  • JXH_123
  • JXH_123
  • 2014-06-19 13:47:57
  • 1398

sort函数详解(STL)

一直用着sort函数,感觉很强很好用,从来没想过他具体原理与实现 简单写一写吧 关于qsort与sort函数的区别(个人感觉qsort百度百科写的挺好) 1. 头文件:stdlib.h 用 法:...
  • yinghui_yht
  • yinghui_yht
  • 2017-03-28 18:54:16
  • 111

c++ stl sort函数奔溃问题

转载自新浪博客这位牛人一次stl sort调用导致的进程崩溃(zz) 此博文包含图片 (2012-10-08 10:06:24)转载▼ 标签: it 分类: 工作 近期我们开发的...
  • xiyuan1223
  • xiyuan1223
  • 2017-04-19 20:56:02
  • 672

STL sort函数的内部实现

(1)在STL提供的各式各样的算法中,sort()是最复杂最庞大的一个。这个算法只接受RandomAccessIterators(随机存取迭代器),然后将区间内所有元素由小到大重新排列。第二个版本允许...
  • ouyangjinbin
  • ouyangjinbin
  • 2016-04-08 10:35:10
  • 1092

STL里面的sort()函数使用结构体

当用sort()想对结构体进行排序的时候,这时候就需要自己写一个排序函数了 写这个是因为自己好久没用STL里面的sort()函数了。都忘记了 。再次实现一下 其实排序函数也很简单,自己实现 代...
  • midle110
  • midle110
  • 2012-11-06 13:25:20
  • 5935

C++之STL中sort函数的内部实现(一)

概述STL中提供了一个sort()函数,用于排序。它的实现虽然是基于我们熟悉的quick sort, insertion sort, heap sort,但是内部却庞大复杂。sort()函数只能接受R...
  • u010902721
  • u010902721
  • 2015-05-20 11:17:58
  • 4142

STL中sort()函数的用法

在做ACM题的过程中,算法中经常会用到排序的处理,自己写排序有点麻烦,最主要是记不住排序算法的代码。。。,所以就取巧适用STL中的sort函数,这个省心又放心,只需要包含头文件就可以了,这里总结一下用...
  • zhangchaoq
  • zhangchaoq
  • 2016-03-19 13:26:31
  • 213

STL 中list的sort函数实现

详细道来: fill ------> 2^fill 表示现在能处理的数据的最大数目 counter[ fill ]---> 将处理完的2^fill个数据存入 counter[ fill ]中 carr...
  • tiefanhe
  • tiefanhe
  • 2013-10-22 09:10:07
  • 505
收藏助手
不良信息举报
您举报文章:STL sort函数
举报原因:
原因补充:

(最多只允许输入30个字)