sort函数的用法与实验

用了这么久的sort排序,但是一直没有对他进行总结。

      像我这样的蒟蒻有了sort排序就再也没有看过快排、冒泡排序、桶排序了......

sort的头文件<algorithm>

    存在于C++标准库内的函数,我们其实并不需要知道他的原理,只要会用就行了;;;

  sort函数有三个参数

  sort(a,b,c)

  1. a表示要排序的数组的起始位置
  2. b表示要排序的数组的结束地址(最后一位要排序的地址)
  3. c是排序的方法,如果不写则默认从小到大排序

Sort函数使用模板: Sort(start,end,排序方法)

  使用sort函数主要的方法就是在参数c上做文章

  如想实现从大到小排序

      可以自己写一个比较函数

 

bool complare(int a,int b)
{
 return a>b;
}

  

 

具体操作就是:

先搞好参数c,即做一个比较函数 cmp   ↑  

然后sort(a,b,cmp)即可

 

这样做还是有点麻烦,因为还需要自己编写告诉程序进行何种排序的函数,c++标准库强大的功能完全可以解决这种麻烦。

Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则:

less<数据类型>()//从小到大排序

greater<数据类型>()//从大到小排序

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};
 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函数也可以实现对字符的排序

sort(a,b,c<char>());

如对"asdfghjklk"进行排序

从大到小排序

 

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

  

 

从小到大排序

 

#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,less<char>());
 for(int i=0;i<10;i++)
 cout<<a[i]<<endl;
 return 0;
}
 

  

 

 

posted @ 2017-10-23 17:27  Pirote  阅读(562)  评论(0编辑  收藏  举报