排序数字的算法

时间:2014-06-21 12:59:29

标签: algorithm sorting

我有不同的数字,需要通过将每个数字换成0来按升序排序。

结果编号只能通过用0交换每个数字来获得。

例如,我有3x3矩阵,

   3    4     1
   2    5     0
   6    8     7

在上面的矩阵中,数字应该用0交换以升序。从上面看,在第一步中只有5,7和1与0交换。最终输出应该是这样的

   1    2     3
   4    5     6
   7    8     0

实现这一目标的最佳解决方案是什么。

由于

1 个答案:

答案 0 :(得分:3)

这是着名的 15-puzzle 的简单版本。

解决此类问题的一般方法是将其建模为状态图,并运行shortest-path算法以查找从源(给定板)到目标(已分类的板)。

状态图是G=(V,E),其中:V= { all possible boards }和E = {(u,v)|可以通过单次交换来改变你对你的看法。“。

您可以运行BFSbi-directional BFS(因为您有一个来源和一个目标),甚至可以A* Algorithm使用适当的可允许启发式功能来查找状态图上的路径,这代表了一系列产生解决方案的互换。