我有一个细节想不通,为啥在这个地方可以用比较大小来实现
来源: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回答
-
字符串之间的默认排序方式是字典序。这是一个通用的字符串比较大小的方式。你翻开一本字典,所有的单词是按照一个顺序排列的,这就是字典序。在一本字典里,排在前面的单词比排在后面的单词小。如果想了解更形式化的对“字典序”的定义,可以搜索学习一下,应该是很好理解的:)
近乎所有的语言,都会用字典序作为字符串之间的默认排序方式。当然,这只是字符串之间比较大小的一种方式。实际上,任意类型的两个变量之间进行大小比较,可以定义无数种方式。你当然也可以定义属于自己的比较方式:)
142018-02-22
相似问题