我有一个细节想不通,为啥在这个地方可以用比较大小来实现

来源:5-4 二分搜索树的查找

_遥不可及_

2018-02-21

这个搜索中,key 不是str么,为啥这里可以比较大小?是根据ASCII转的么?或者是重载运算符了吗?

虽然bobo老师不让细扣语法,但还是很好奇这里是如何实现的。毕竟PPT演示都是用的数字,在这里突然杀出string有点懵

Value* search(Node* node, Key key){
   if( node == NULL )
       return NULL;
   if( key == node->key )
       return &(node->value);
   else if( key < node->key )
       return search( node->left , key );
   else // key > node->key
       return search( node->right, key );
}


写回答

1回答

liuyubobobo

2018-02-22

字符串之间的默认排序方式是字典序。这是一个通用的字符串比较大小的方式。你翻开一本字典,所有的单词是按照一个顺序排列的,这就是字典序。在一本字典里,排在前面的单词比排在后面的单词小。如果想了解更形式化的对“字典序”的定义,可以搜索学习一下,应该是很好理解的:)


近乎所有的语言,都会用字典序作为字符串之间的默认排序方式。当然,这只是字符串之间比较大小的一种方式。实际上,任意类型的两个变量之间进行大小比较,可以定义无数种方式。你当然也可以定义属于自己的比较方式:)

1
4
_遥不可及_
回复
liuyubobobo
【捂脸】基础功不足暴露了,说实话我已经工作三年了,有时候写逻辑的时候实现的性能总不那么完美,而且还有很多设计漏洞; bobo老师也加油↖(^ω^)↗,期待你的文章;
2018-02-22
共4条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程