什么抽象数据类型(ADT)用于在Python中实现steinhaus-johnson-trotter(置换)算法?

时间:2016-04-01 15:36:42

标签: algorithm python-2.7 permutation doubly-linked-list

使用什么抽象数据类型(ADT)来实现steinhaus-johnson-trotter algorithm以在Python中生成对象的排列?

我特别担心数据的任何位置插入的复杂性成本:

1

12
21

123
132
312

来自llist模块的双链表是一个不错的选择?

1 个答案:

答案 0 :(得分:1)

您不需要在序列中插入新元素,每次只需要交换两个元素。这在阵列上很快。标准Python列表实现为数组,请参阅https://wiki.python.org/moin/TimeComplexity,因此我认为这是用于此目的的最佳数据结构。