cmp函数 の 字典序

我们都知道手写 cmp() 可以重载 sort() 的比较规则
嗯对!
要想手写出比较字典序的 cmp() 我们先要认识另外一个函数 strcmp()

strcmp 函数的排面

原型

int strcmp(const char *s1, const char *s2);

头文件

#include <string.h>

功能

用来比较两个字符串

参数

s1s2为两个进行比较的字符串

返回值

  • s1s2 字符串相等,则返回
  • s1 大于 s2 ,则返回大于零的数;
  • s1 小于 s2 ,则返回小于零的数。

说明

  • strcmp() 函数是根据 ACSII码 的值来比较两个字符串的;
  • strcmp() 函数首先将 s1 字符串的第一个字符值减去 s2 第一个字符,
    • 若差值为零则继续比较下去;
    • 若差值不为零,则返回差值。

cmp() 的实现

定义结构体储存字符串

struct node{
    char str[100005];
}

定义排序规则

字典序

bool cmp(node n1,node n2){
    return strcmp(n1.str,n2.str)<0;
}

逆字典序

bool cmp(node n1,node n2){
    return strcmp(n1.str,n2.str)>0;
}

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉 完结撒花! AwA 🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

posted @ 2021-08-25 17:23  不爱喝橙子汁的橙子  阅读(120)  评论(0编辑  收藏  举报