由于本蒟蒻刚开始学排序,所以仅仅会SORT,后续会更新选排和箱排
目录
一、为什么选择使用sort()
在刷题的时候我们经常会碰到排序的问题,如果我们不使用一些排序的方法那我们只能手撕排序,这样就会浪费一些时间。而且我们还需要根据需要去选择相关的排序方法:冒泡排序、快速排序、插入排序、希尔排序、归并排序、选择排序、堆排序、基数排序、箱排序。在选择的过程中也需要我们花费一些时间,所以在明白这些经典排序的情况下再一遍一遍的手写就有点浪费时间啦!
如果我们使用sort()方法就可以只需要一条语句就可以实现排序,这样就极大的节省了我们在刷题中所花费的时间。当然如果对这些经典的排序方法不熟悉的话还是建议大家去了解一下这些方法,比较一下这些方法的优劣以及使用的情景。
————————————————
版权声明:本文为CSDN博主「晴空๓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41575507/article/details/105936466
我有一个问题 : 箱排不是比SORT更快吗?
二、SORT函数的用法
低级版
#include<algorithm>
//......
int a[n];
sort(a+1,a+n+1);//下标为1
sort(a,a+n);//下标为0
此时,若n=5,(下标为零)a[0]=1,a[1]=9,a[2]=7,a[3]=5,a[4]=0,那么sort后会变为a[0]=0,a[1]=1,a[2]=5,a[3]=7,a[4]=9,但这种方法只能实现从小到大排序
高级版
#include<bits/stdc++.h>//别问为啥用这个,问就是懒得拼函数头文件了
//......
bool cmp(int a,int b){
return a<b;//从小到大排序
return a>b;//从大到小排序
}
//......
int a[n];
sort(a+1,a+n+1,cmp);//我喜欢为1的下标
此时,若n=5,(下标为零)a[0]=1,a[1]=9,a[2]=7,a[3]=5,a[4]=0,那么sort后会变为a[0]=9,a[1]=7,a[2]=5,a[3]=1,a[4]=0,但这种方法只能实现从小到大排序
三、整活:sort源代码
template<typename _RAIter, typename _Compare>
_GLIBCXX20_CONSTEXPR
void
sort(_RAIter, _RAIter, _Compare);
四、结构体的sort
※※※注意:
即便是从小到大排序,也要加cmp
结构体的cmp较为特殊
//......
struct Student{
int score,id;
}N[2147483647];
bool cmp(Student a,Student b){
//......
}
//......