目 录
一、排序的稳定性:
二、时间复杂度为 O(n) 的排序:
1、计数排序(稳定):
2、其他线性排序:
(基本用不到,不写了)
三、时间复杂度为 O(nlogn)的排序:
1、堆排序(不稳定):
2、归并排序(稳定):
四、时间复杂度为 O(n²)的排序:
1、选择排序(不稳定):
2、冒泡排序(稳定):
五、sort () 排序函数
sort () 函数包含在头文件为 #include<algorithm> 的c++标准库中,是一种类似于快排的方法,时间复杂度为O(nlogn)。
sort () 函数有三个参数:
(1)要排序的数组的起始地址。
(2)结束的地址(最后一位要排序的地址)
(3)参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
使用样例 —— 共 n 个整数,从小到大排序:
#include <algorithm>
#include <iostream>
using namespace std;
int n,a[20000];
int main()
{
cin >>n;
for (int i=1;i<=n;i++)
cin >>a[i];
sort (a+1,a+n+1); //由于是从 1 开始放,所以要加一,默认为从小到大排序
for (int i=1;i<=n;i++)
cout <<a[i] <<" ";
return 0;
}使用样例 —— 共 n 个整数,从大到小排序:
现在该怎么办呢? 要用到 sort () 的第三个参数了,使用方法如下:
//需要加入一个比较函数 complare(),此函数的实现过程是这样的
bool complare(int a,int b)
{
return a>b;
}然后:
#include <algorithm>
#include <iostream>
using namespace std;
int n,a[20000];
bool complare(int a,int b)
{
return a>b;
}
int main()
{
cin >>n;
for (int i=1;i<=n;i++)
cin >>a[i];
sort (a+1,a+n+1,complare); //现在不需要给 complare 函数加参数。
for (int i=1;i<=n;i++)
cout <<a[i] <<" ";
return 0;
}就可以了。
sort () 函数的速度很快,使用很方便,不需要自己打一些复杂代码,还能根据数据量来选择排序算法,非常的good!
版权声明:本文为DUXS11原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。