string - 是否有一种有效的算法来找到具有最差交换距离的给定字符串的排列?

标签 string algorithm permutation swap

鉴于问题 Counting the adjacent swaps required to convert one permutation into another 中定义的交换距离(即,我们有一个字符串,并且该字符串的排列的交换距离是返回到原始字符串所需的“相邻字符交换”的最小数量)。

我想要一种算法来找到给定字符串的最大可能交换距离。当然,我们可以枚举所有排列并检查每个排列的交换距离,但这是非常低效的。有没有更快的方法?

最佳答案

允许您执行的基本操作是交换字符串的两个元素。这也是您在 insertion sort 中唯一可以执行的操作。 ,所以看来您可以从排序文献中提取行之有效的结果来解决问题。

根据插入排序的维基页面,最坏的情况是输入顺序相反。按照同样的逻辑,反转目标字符串应该会产生一个距离目标最远的字符串。

题为“On Generation Worst-Cases for the Insertion Sort”的论文 ( link ) 可能会有所帮助。

关于string - 是否有一种有效的算法来找到具有最差交换距离的给定字符串的排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095295/

相关文章:

c++ - SDL + SDL_ttf : Transparent blended text?

java - 最长的盈利交易算法

java - 求同长钉子锤击后的最大值

java - 性能:JAVA排列

python - Pandas:列向量的成对串联

python - 在 Python 中使用两个子字符串拆分字符串

wpf - 从 GridViewColumn 访问 GridViewColumnHeader 对象

java - Android:无法在原始类型 int 上调用 toString()

algorithm - 在不同级别实现递归和循环

用于查找 Arraylist 中所有可能的排列组合的 Java 递归过早退出