有谁知道可逆排序算法吗?因此考虑到这一点:
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/