sort函数的用法

参考博客: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;
}

猜你喜欢

转载自blog.csdn.net/zhao2chen3/article/details/82977247