单词成二进制堆

时间:2014-02-12 10:56:30

标签: algorithm sorting data-structures heap

使用以下单词显示最小二进制堆的形成。它们按以下顺序插入:在那里,将,是,后果,吉姆。

我知道用大写字母的单词被认为小于以非大写字母开头的其他单词。如果只有一个单词带有大写字母,那么我知道我们可以代表它。但是,我们如何显示堆有大写字母的两个单词的堆。

为什么大写字母被认为小于非大写字母?

谢谢

4 个答案:

答案 0 :(得分:2)

首先让我们考虑如何对单词进行排序:

Consequences < There < be < jim < will

所以我们可以给他们数字,以便更容易使用:

1 = Consequences
2 = There
3 = be
4 = jim
5 = will

首先我们添加There == 2

                                       2

然后will == 5be == 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表:

enter image description here

您看到A的ASCII值为65,而a的值为97. Unicode对这些字母具有相同的字符代码,因此在那里也是如此。