请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

这个搜索中,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回答

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


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

1 回复 有任何疑惑可以回复我~
  • 提问者 _遥不可及_ #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-02-22 08:40:47
  • 提问者 _遥不可及_ #2
    谢谢bobo老师的解答。对宏观算法到具体业务方面都很困惑( ⊙ o ⊙ )
    回复 有任何疑惑可以回复我~ 2018-02-22 08:44:44
  • liuyubobobo 回复 提问者 _遥不可及_ #3
    宏观算法到具体业务上应用是一个很大的话题。我在这个课程的第一章,其实就在尝试解释算法到底有什么用。答案是:无处不用。但是我发现其实这个答案不能让很多同学信服,因为很多同学的亲身体会是:没用。其实这有点儿像数学。数学的发展俨然在人类历史上产生了不可估量的作用,农业医学建筑工业汽车制造互联网无处没有数学的影子。可是从另一个角度看,现代人生活不掌握数学似乎也是ok的。这里就产生了隔阂。数学到底有什么用?我有时间想再写一篇文章仔细阐述一下这个问题。但不管怎样,算法属于计算机行业从业人员的基本功。其实通过你提出的这个问题,我可以感觉你可能接触计算机的时间并不长?不要着急,慢慢学习。很有可能时间长了,自己也会有自己的体会:)加油!
    回复 有任何疑惑可以回复我~ 2018-02-22 09:15:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信