sort
使用快速排序的递归形式,时间复杂度是O(nlog(n) )
Sort函数有三个参数:(第三个参数可不写)
- 第一个是要排序的数组的起始地址。
- 第二个是结束的地址(最后一位要排序的地址)
- 第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
1 | int b = 3, c = 12; |
1 | int a[]={3,4,1,12,0,8,4}; |
针对自定义的数据类型,需要自定义排序的方式1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32struct Frontier
{
Frontier(double c):
cost(c){}
double cost;
};
bool compareFrontier(Frontier f1, Frontier f2)
{
return (f1.cost < f2.cost);
}
void showFrontiers(const vector<Frontier>& v)
{
for(auto f: v)
cout << f.cost << " ";
cout << endl;
}
vector<Frontier> frontiers;
frontiers.push_back(Frontier(1.2) );
frontiers.push_back(Frontier(4.9) );
frontiers.push_back(Frontier(12.7) );
frontiers.push_back(Frontier(0.3) );
frontiers.push_back(Frontier(3.6) );
showFrontiers(frontiers);
std::sort(frontiers.begin(), frontiers.end(),
[](const Frontier& f1, const Frontier& f2) { return f1.cost < f2.cost; });
// std::sort(frontiers.begin(), frontiers.end(), compareFrontier);
showFrontiers(frontiers);frontiers
一般用vector或数组,不能是list, dequeue, queue
运行结果:1
21.2 4.9 12.7 0.3 3.6
0.3 1.2 3.6 4.9 12.7
reverse
1 |
|