首页 > 解决方案 > 从行的最后一个索引开始,按行中列值的公共顺序对矩阵行进行排序

问题描述

假设原始矩阵是

[
 [20, 15, 30, 40, 20]
 [20, 40, 30, 40, 20]
 [20, 15, 20, 15, 20]
 [30, 20, 20, 40, 20]
 [20, 15, 30, 40, 10]
 [20, 15, 30, 30, 10]
 [20, 15, 30, 30, 10]
 [20, 15, 30, 40, 20]
]

排序后,矩阵如下所示:

[
 [20, 15, 30, 30, 10]
 [20, 15, 30, 30, 10]
 [20, 15, 30, 40, 10]
 [20, 15, 20, 15, 20]
 [30, 20, 20, 40, 20]
 [20, 15, 30, 40, 20]
 [20, 15, 30, 40, 20]
 [20, 40, 30, 40, 20]
]

即,保留一行中的顺序。如果行中的最后一列值相同,则组合在一起;如果行中倒数第二列的值相同,则将具有相同倒数第二列和最后一列值的行组合在一起...继续直到完成排序。

我的算法是:

  1. 根据最后一列对行进行排序
  2. 将具有相同最后一列值的行分组
  3. 根据倒数第二列对具有相同最后一列值的行进行排序
  4. 将具有相同倒数第二和最后一列值的行划分为子组
  5. 重复直到完成排序

我的问题是:

使用一个线程可以改进我的算法吗?还是只能用多线程优化?

标签: pythonalgorithmsortingmatrix

解决方案


推荐阅读