二进制快速排序起始位位置

时间:2013-12-20 06:29:49

标签: c++ c algorithm sorting

我正在阅读以下位置的二进制快速排序:

http://books.google.co.in/books?id=hyvdUQUmf2UC&pg=PA426&lpg=PA426&dq=robert+sedwick+binary+quick+sort&source=bl&ots=kAYK3_LkCg&sig=BjKk4g68h8xG87Vx2vS_TiUKDQY&hl=en&sa=X&ei=uuKzUq4-iY-tB7nZgdgL&ved=0CEYQ6AEwBA#v=onepage&q=robert%20sedwick%20binary%20quick%20sort&f=false

文字摘要:

  

对于由随机位组成的全字密钥,程序10.1中的起始点应该是字的最左位或位0.通常,应该使用的起点在应用程序上以直接的方式取决于,关于机器中每个字的位数,以及整数和负数的机器表示。对于图10.2和10.3中的单字母5位密钥,32位机器上的起点为27位。

我对上述文字的疑问是:

  • 为什么作者得出结论,对于5位密钥,32位机器的起点应该是27位?

1 个答案:

答案 0 :(得分:0)

文字摘录令人困惑,因为它不完整。

看来文本假设机器字中的位为大端位编号。在大端比特编号中,第0位是字中最左边的位。提示来自短语“单词的最左边位,或位0。

因此,对于32位寄存器中保存的5位数字,该数字的第0位将保存在机器字的第27位,用于大端编号字中的右对齐值。

 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3   machine word
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   bit numbers
+-----------------------------------------------------+---------+
|x x x x x x x x x x x x x x x x x x x x x x x x x x x|0 1 2 3 4|  char to sort
+-----------------------------------------------------+---------+

如今,大多数地方的大端位编号并不常见。 IBM POWER / PowerPC仍然使用大端编号,与旧的大端架构(如TMS9900 / TMS99000系列)一样。