dw网站制作的一般流程,免费成品网站模板,海南海口网站开发公司,动漫网页设计图片使用 sort 实现自定义排序 目录 使用 sort 实现自定义排序1.sort 的基本用法2.sort 实现自定义排序3.结构体重载进行比较 1.sort 的基本用法
sort 库函数需要引入头文件algorithm,是一种排序算法#xff0c;使用的排序逻辑可以看成是效率很高的快速排序或其的改进版本。平均时…使用 sort 实现自定义排序 目录 使用 sort 实现自定义排序1.sort 的基本用法2.sort 实现自定义排序3.结构体重载进行比较 1.sort 的基本用法
sort 库函数需要引入头文件algorithm,是一种排序算法使用的排序逻辑可以看成是效率很高的快速排序或其的改进版本。平均时间复杂度为 n l o g n nlogn nlogn 。下面介绍 sort 的基本用法。
对一个数组进行排序
#includeiostream
#includealgorithm //使用sort库函数需要引入头文件algorithmusing namespace std; const int N 100010;
int arr[N]; //定义全局变量数组arrint main()
{int n; //n代表数组长度cin n; for(int i 1; i n; i )cin arr[i]; //输入n个数sort(arr 1, arr n 1);//sort(初位置末位置的下一位) 由于我们读入时是从arr[1]开始储存的所以初位置是arr 1//待排序的区间为左闭右开区间[i, jfor(int i 1; i n; i )cout arr[i] ;//打印排序后数组return 0;
}样例测试 对容器进行排序迭代器排序
#includealgorithm
#includeiostream
#include vectorusing namespace std;vectorint arr; //使用vectorint容器int main()
{int n;cin n;//arr的长度for(int i 1; i n; i ){int x;cin x;arr.push_back(x);//将x插入arr容器末尾}sort(arr.begin(), arr.end());//使用迭代器进行排序for(auto i : arr)//迭代遍历cout i ;return 0;
}2.sort 实现自定义排序
sort 默认使用小于号 进行排序一般进行的都是升序排序通过自定义比较规则可以传入第三个参数可以是函数或 lambda 表达式。 使用函数实现自定义排序
#includeiostream
#includealgorithmusing namespace std;const int N 100010;
int arr[N];//待排序数组bool cmp(const int u, const int v)//自定义排序函数
{return u v;
}int main()
{int n;cin n;//数组长度for(int i 1; i n; i )cin arr[i];//输入数组中的数sort(arr 1, arr n 1, cmp);//引入了第三个参数只写函数名for(int i 1; i n; i )cout arr[i] ;//打印输出return 0;
}这里将升序排序通过自定义函数改成了降序排序 使用lambda表达式实现自定义排序
#includeiostream
#includealgorithm
#includevectorusing namespace std;int main()
{vectorint arr {5, 1, 3, 8, 2}; //直接将数据初始化传入arrsort(arr.begin(), arr.end(), [](const int u, const int v){return u v;}); //使用lambda表达式实现自定义排序for(auto i : arr)cout i ;//迭代打印return 0;
}3.结构体重载进行比较
结构体可以将小于号重载后进行排序使用前面的方法也可以
struct Node
{int u, v;bool operator (const Node m)const{//以u为第一关键字v为第二关键字排序return u m.u ? v m.v : u m.u;}
}重载完成的结构体在使用sort时可以直接使用会默认按重载的小于号逻辑进行排序。
这就是全部的内容了喜欢可以点个赞寒假会持续更新。