一.前言二.内容
1.sort()
sort()函数应用 三.小声bb四.更新日志
一.前言在刷题过程中,总能看到dl用一些库函数,简化算法,由此萌生慢慢学习整理常用的库函数的想法,本文目前仅为了自用而整理,欢迎指正。
(整理顺序按学习顺序,后续可能会调整 3.27 )
作用描述: 对给定区间的所有元素进行排序,默认为升序,也可进行降序排序。
时间复杂度: n*logn (高于冒泡排序)
头文件: #include < algorithm >
函数声明:void sort(start,end,cmp)
说明:
start:排序的起始地址
end:数组结束地址的下一位
cmp:用于规定排序的方法(可不填,默认升序)
如果cmp返回结果为假, 那么函数就会将他们互换位置;
如果cmp返回结果为真,就会保持原来位置不变。
补充:(其余sort类函数)
实例:
1.不加cmp,默认升序(从小到大)
#include#include using namespace std; int main() { int a[7] = { 2,6,9,8,4,3,2 }; for (int i = 0; i < 7; i++) cout << a[i] << " "; sort(a, a + 7); cout << endl; for (int i = 0; i < 7; i++) cout << a[i] << " "; return 0; }
2.加上cmp,实现从大到小排序
#include#include using namespace std; bool cmp(int a, int b) { return a > b; //返回值为假,说明a<=b,交换,使其从大到小排序 } int main() { int a[7] = { 2,6,9,8,4,3,2 }; for (int i = 0; i < 7; i++) cout << a[i] << " "; sort(a, a + 7,cmp); cout << endl; for (int i = 0; i < 7; i++) cout << a[i] << " "; return 0; }
3.结构体排序(已更新)
//实现目标:将a按升序排序,如果a相同再按b降序排序,b相同,则按c降序排列
#includesort()函数应用using namespace std; //结构体sort()排序 #include struct Node { int a; int b; double c; }; bool cmp(Node x, Node y) { if (x.a != y.a) return x.a < y.a; if (x.b != y.b) return x.b > y.b; return x.c > y.c; } int main() { struct Node arr[4]; arr[0] = { 3,4,3.15 }; arr[1] = { 7,8,3.26 }; arr[2] = { 5,9,3.8 }; arr[3] = { 4,9,3.7 }; for (int i = 0; i < 4; i++) cout << arr[i].a << " " << arr[i].b << " " << arr[i].c << endl; sort(arr, arr + 4, cmp); cout << "排序后:" << endl; for (int i = 0; i < 4; i++) cout << arr[i].a << " " << arr[i].b << " " << arr[i].c << endl; return 0; }
题目跳转链接
三.小声bb慢慢总结,慢慢进步~~
四.更新日志2022.3.28 整理sort()及其题目



