使用以下单词显示最小二进制堆的形成。它们按以下顺序插入:在那里,将,是,后果,吉姆。
我知道用大写字母的单词被认为小于以非大写字母开头的其他单词。如果只有一个单词带有大写字母,那么我知道我们可以代表它。但是,我们如何显示堆有大写字母的两个单词的堆。
为什么大写字母被认为小于非大写字母?
谢谢
答案 0 :(得分:2)
首先让我们考虑如何对单词进行排序:
Consequences < There < be < jim < will
所以我们可以给他们数字,以便更容易使用:
1 = Consequences
2 = There
3 = be
4 = jim
5 = will
首先我们添加There == 2
:
2
然后will == 5
和be == 3
:
2
/ \
5 3
到目前为止一切顺利。但是现在添加Consequences == 1
时我们必须堆积:
2 1
/ \ / \
5 3 ==> 2 3
/ /
1 5
最后我们添加jim == 4
:
1
/ \
2 3
/ \
5 4
至于比较字母,这是因为ASCII编码。所以这些字母如下:
A < B < C < .. < Z < a < b < c < ... < z
答案 1 :(得分:1)
我假设您的意思是迭代地构建堆并在每次插入后堆积(如果需要)。我们只需要开始添加单词:
首先,您只需添加:
There
然后,添加'will'
There
will
同样适用于'be'
There
will be
现在,您添加后果:
There
will be
Consequences
但Consequences < will
所以你需要筛选:
There
Consequences be
will
再次,因为Consequences < There
Consequences
There be
will
现在,我们可以添加'jim':
Consequences
There be
will jim
自There<jim
以来 - 我们完成了!
答案 2 :(得分:0)
大写字母在引用ASCII表(http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange)时按字典顺序缩小,也许你的意思是。
答案 3 :(得分:0)
您可以按照数字的方式构建最小堆,但不是进行数字比较,而是进行字典比较。
按字典顺序/按字母顺序比较2个单词的作用如下:比较第一个字母,如果相等,则比较下一个字母等。
大写字母被视为“较小”,因为它们的字符代码值较低。也就是说,它们在字典上比较小,因为它们来自“小写字母”之前。如果你看一下ASCII表:
您看到A
的ASCII值为65,而a
的值为97. Unicode对这些字母具有相同的字符代码,因此在那里也是如此。