查找表中的排序顺序

时间:2018-08-07 12:56:53

标签: algorithm sorting

为我提供了一个包含三列的表格,并且必须查找用于排序的列的顺序。可以使用column1首先进行排序,然后使用column2打破平局,然后再使用column3。否则,可以使用column3首先排序,使用column1打破平局,依此类推。

这是Java语言,因此我可以将值存储在数组中。但是只要想法本身就足够了,我可以实现。是否有与此用例相关的算法范式?任何想法表示赞赏。

编辑:示例

说, 例如01

Movie = ["inception", "inception", "memento"]
rating = [5, 8, 7]
bo = [700, 652, 458]

这里排序的顺序是:电影,评分。评级没有关系,因此BO未用于排序。

Ex 02

Movie = ["inception", "inception", "memento", "memento", "memento"]
rating = [9, 8, 7, 6, 9]
bo = [652, 700, 458, 555, 555]

在此排序的顺序是电影,bo,等级。 BO用于打破电影中的并列,而等级用于打破BO中的并列。

2 个答案:

答案 0 :(得分:1)

检查每一列是否有相邻的无序对。排序的第一列将没有这些。其他人也可能会遇到这种情况,在这种情况下,您无法分辨哪个是第一排序列。

如果您可以识别第一个排序列,请以相同的方式检查两个其他列,以识别第二个排序列,但仅对第一个排序列中相同值的集合(即排序的第二列具有可能会影响任何东西。其余两列中至少有一个不会有相邻的无序对(第一列中有相同的元素)。如果只有一个,那么您已经找到了第二列,否则您将找不到

答案 1 :(得分:1)

我想到的第一件事是;扫描各行以找到已排序的行。如果该排序的行没有重复,则表示该行已按其自身的值进行排序,并且未使用其他行。如果它具有重复元素,则采用重复元素的间隔,并检查其他行以查看其中是否有相同间隔。具有排序间隔的行用作平局决胜局。如果用于排序的第二行的间隔重复,那么第三行肯定用于最后的抢七。