sort()函数基本用法

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;

}

例三:

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;

}

  • 87
    点赞
  • 226
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在 C++ 中,sort 函数用于对数组或容器进行排序。它的用法可以简单地概括为: ```c++ sort(start_iterator, end_iterator) ``` 其中,`start_iterator` 表示要排序的序列的起始位置的迭代器,`end_iterator` 表示序列的结束位置的迭代器。 例如,对一个整型数组进行排序的代码如下: ```c++ #include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr)/sizeof(arr[0]); sort(arr, arr+n); cout << "Sorted array is: \n"; for (int i=0; i<n; i++) cout << arr[i] << " "; return 0; } ``` 输出结果为: ``` Sorted array is: 1 5 7 8 9 10 ``` 除此之外,sort 函数还可以接受一个可选的比较函数作为第三个参数,用于指定排序的方式。如果不传入比较函数,则默认按照从小到大的方式排序。 比较函数的原型通常为: ```c++ bool cmp(const Type& a, const Type& b) ``` 其中,`Type` 表示排序的类型。比如,对于一个整型数组,`Type` 就是 `int`。 比较函数应该返回一个布尔值,表示两个元素的大小关系。如果返回值为 `true`,则表示第一个元素应该排在第二个元素的前面。 以下是一个使用比较函数对字符串数组进行排序的例子: ```c++ #include <iostream> #include <algorithm> #include <string> using namespace std; bool cmp(string a, string b) { return a.size() < b.size(); } int main() { string arr[] = {"apple", "banana", "orange", "kiwi"}; int n = sizeof(arr)/sizeof(arr[0]); sort(arr, arr+n, cmp); cout << "Sorted array is: \n"; for (int i=0; i<n; i++) cout << arr[i] << " "; return 0; } ``` 输出结果为: ``` Sorted array is: kiwi apple banana orange ``` 以上就是 sort 函数的主要用法
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值