写点什么

C++ sort 排序及自定义排序

用户头像
玄兴梦影
关注
发布于: 2021 年 04 月 05 日

默认排序

升序排序


#include<bits/stdc++.h>
using namespace std;
int main(){ int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "排序前:" ; for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout <<endl; cout << "排序后:"; sort(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout <<endl; return 0;}
复制代码



降序排序

通过 函数 greater() 函数实现降序排序

greater<int>() 说明 , greater 意为更大

<?> 可以为 默认类型,array,int, string 等类型


#include<bits/stdc++.h>
using namespace std;
int main(){ int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "排序前:" ; for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout <<endl; cout << "排序后:"; sort(arr, arr + n, greater<int>()); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout <<endl; return 0;}
复制代码



自定义排序

比如结构体排序

我们自己写一个比较函数,这个比较函数返回一个 bool。

以此例子来说,以 startInt 做为基准,进行比较如果 a 的 startInt 小于 b 的 startInt 则返回 true。


#include<bits/stdc++.h>
using namespace std;
struct Interval{ int startInt; int endInt;};
bool cmp(Interval a, Interval b){ return a.startInt < b.startInt;}
int main(){ Interval arr[] = { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } }; int n = sizeof(arr) / sizeof(arr[0]); cout << "排序前:" ; for (int i = 0; i < n; i++) cout << "[" << arr[i].startInt << "," << arr[i].endInt << "] "; cout <<endl; cout << "排序后:"; sort(arr, arr + n, cmp); for (int i = 0; i < n; i++) cout << "[" << arr[i].startInt << "," << arr[i].endInt << "] "; cout <<endl; return 0;}
复制代码



发布于: 2021 年 04 月 05 日阅读数: 18
用户头像

玄兴梦影

关注

做一个写诗的程序员。 2018.12.30 加入

一个不是诗人的诗人,不是程序员的程序员。

评论

发布
暂无评论
C++ sort 排序及自定义排序