在C++中实现数组从大到小排序,最简洁高效的方法是使用标准库中的sort()
函数,结合自定义比较函数或内置的greater<T>()
函数。该方法只需3行核心代码,时间复杂度为,适用于各类基础数据类型和自定义结构体。
-
使用标准库
sort()
函数:包含<algorithm>
头文件后,通过sort(起始地址, 结束地址, 比较规则)
即可完成排序。若需降序排列,需额外定义返回a > b
的比较函数,或直接使用greater<int>()
等预定义函数对象。例如对整型数组a
降序排序:cpp复制
sort(a, a+10, [](int x, int y){return x > y;}); // Lambda表达式 // 或使用标准函数对象:sort(a, a+10, greater<int>());
-
自定义结构体的排序:对于包含多字段的结构体,可在比较函数中定义优先级规则。例如先按字段
a
升序,再按字段b
降序:cpp复制
struct Node{int a; double b;}; bool cmp(Node x, Node y){ return x.a != y.a ? x.a < y.a : x.b > y.b; } sort(arr, arr+100, cmp);
-
与其他排序方法的对比:相比手动实现的冒泡排序()或快速排序,
sort()
函数不仅代码简洁,还通过内省排序(快速排序+堆排序优化)保证了最坏情况下的性能。对于超大规模数据,可考虑stable_sort()
保持相同元素的原始顺序。
掌握这一核心方法后,可轻松应对99%的C++排序需求。若需处理特殊数据类型(如字符串或自定义对象),只需调整比较函数的逻辑即可。