下列排序算法中,元素的移动次数与关键字的初始排列次序无关的是 () 。
由题中“失配 s[i] ≠ t[j] 时, i=j=5 ” ,可知题中的主串和模式串的位序都是从 0 开始的(要注意灵活应变)。 按照 next 数组生成算法,对于 t 有:
编号 | 0 | 1 | 2 | 3 | 4 | 5 |
t | a | b | a | a | b | c |
next | - 1 | 0 | 0 | 1 | 1 | 2 |
依据 KMP 算法“当失配时, i 不变, j 回退到 next[j] 的位置并重新比较”,当失配 s[i] ≠ t[j] 时,i=j=5 ,由上表不难得出 next[j]=next[5]=2 (位序从 0 开始)。从而最后结果应为: i=5 ( i 保持不变), j=2 。
由题中“失配 s[i] ≠ t[j] 时, i=j=5 ” ,可知题中的主串和模式串的位序都是从 0 开始的(要注意灵活应变)。 按照 next 数组生成算法,对于 t 有:
编号 | 0 | 1 | 2 | 3 | 4 | 5 |
t | a | b | a | a | b | c |
next | - 1 | 0 | 0 | 1 | 1 | 2 |
依据 KMP 算法“当失配时, i 不变, j 回退到 next[j] 的位置并重新比较”,当失配 s[i] ≠ t[j] 时, i=j=5 ,由上表不难得出 next[j]=next[5]=2 (位序从 0 开始)。从而最后结果应为: i=5 ( i 保持不变), j=2 。(来自王道论坛)