algorithm - 可逆排序算法?

标签 algorithm sorting

有谁知道可逆排序算法吗?因此考虑到这一点:

5,39,196,0,15,243

排序将创建:

0,5,15,39,196,243

然后在不需要知道任何知识的情况下逆向它,除了可能使用哪种排序算法以及运行了多少次迭代之外,它会返回到:

5,39,196,0,15,243

我想到冒泡排序可能会起作用 - 只要我知道排序必须运行多少次,我可能只需反转步骤多少次就可以回到原来的状态。还有其他的吗?

这是一个实验,因此时间复杂度不是问题(我不在乎它有多慢)。

最佳答案

如果你真的不关心运行时效率,你可以使用 Permutation Sort

它将生成列表的所有排列,并检查哪个排列使列表有序。如果您知道在找到排序列表之前运行了多少轮,那么您就确切地知道为了到达该列表而交换了哪些值。

如果您在未排序的列表上运行它,并且必须运行 50 轮才能到达已排序的列表,您将确切地知道交换了哪些元素才能到达那里,并且可以反转排序。

关于algorithm - 可逆排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227599/

相关文章:

perl - 使用 Perl 按特定字母顺序对字符串进行排序

algorithm - 为了使用非递归排序方法,数组大小的理想阈值应该是多少?

algorithm - 计算圆形 map 上两点之间的距离

algorithm - 检查两个字符串是否是字谜

python - 连接 4 minimax 算法 : one for loop

php - 如何制作下拉菜单以对数据库中的数据进行排序

javascript - 如何在不同场上对剑道网格进行排序?

python - 在整数数组/列表中查找重复项

git - 如何对 git 分支输出进行版本排序(与通常的字母/字典排序相比)

string - 对字符串数组进行排序,以便任何其他字符串的子字符串稍后出现