使用什么抽象数据类型(ADT)来实现steinhaus-johnson-trotter algorithm以在Python中生成对象的排列?
我特别担心数据的任何位置插入的复杂性成本:
1
12
21
123
132
312
来自llist
模块的双链表是一个不错的选择?
答案 0 :(得分:1)
您不需要在序列中插入新元素,每次只需要交换两个元素。这在阵列上很快。标准Python列表实现为数组,请参阅https://wiki.python.org/moin/TimeComplexity,因此我认为这是用于此目的的最佳数据结构。