参考博客:http://www.cnblogs.com/pirote-zjy/p/7717914.html
https://zhidao.baidu.com/usercenter?uid=0ae44069236f25705e7958b8&teamType=2
sort函数的用法(C++排序库函数的调用)
头文件是#include<algorithm>
(一)为什么要用c++标准库里的排序函数
Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
(二)c++标准库里的排序函数的使用方法
I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址的下一地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
Sort函数使用模板:
Sort(start,end,排序方法)
sort函数没有第三个参数,实现的是从小到大
举例:从大到小降序排列
#include<stdio.h>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{
return a>b; //由大到小的降序排列
}
int main(){
int ar[1000];
int t,n,i;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&ar[i]);
sort(ar,ar+n,compare);//缺省值是升序
printf("%d",ar[0]);
for(i=1;i<n;i++){
printf(" ");
printf("%d",ar[i]);
}
printf("\n");
}
}
(二)c++标准库强大的功能完全可以解决这种麻烦。
Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则:
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序
1.sort(a,b,c<int>());
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int a[10]= {9,6,3,8,5,2,7,4,1,0};
sort(a,a+10,less<int>());//从小到大排序
for(int i=0; i<10; i++)
cout<<a[i]<<" ";
return 0;
}
2、greater<int>()
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int a[10]= {9,6,3,8,5,2,7,4,1,0};
sort(a,a+10,greater<int>());//从大到小排序
for(int i=0; i<10; i++)
cout<<a[i]<<" ";
return 0;
}
3、
sort函数也可以实现对字符的排序,sort(a,b,c<char>());如对"asdfghjklk"进行排序,从大到小排序
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[11]="asdfghjklk";
sort(a,a+10,greater<char>());//从大到小
for(int i=0;i<10;i++)
cout<<a[i]<<"";
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[11]="asdfghjklk";
sort(a,a+10,less<char>());//从小到大
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}