【发布时间】:2013-08-06 12:10:53
【问题描述】:
假设,我有一个n 维整数数组(n=1 是向量,n=2 是矩形矩阵,n=3 是平行六面体等)。我需要对数组的元素重新排序,以便每一行、每一列等中的元素都处于非递减顺序。
- 任何输入数组都可以吗?
-
任何输入数组所需的排序是否唯一?我刚刚意识到这个问题的答案通常是否,例如对于方阵。 - 对于在所有维度上具有不同长度的任何输入数组,所需的排序是否唯一?
- 产生所需排序的最快算法是什么?
【问题讨论】:
-
您能否更准确地定义“重新排序”?
-
那么,对于一个二维整数数组,你会想要右下角的最大整数吗?在我看来,对每一列进行排序,然后每一行都会给你这样一个重新排序。不过,我确信有一种更快的方法。
-
@ZiyaoWei “重新排序”的意思是“重新排列”,“放置相同的元素是(可能)不同的顺序”。换句话说,结果数组必须包含相同的整数,具有相同的多重性(如果一个整数在输入数组的不同位置多次出现),但可能在不同的位置(无、一个、部分或全部元素的指数可能会改变)。
-
@AlptiginJalayr 是的,最大整数(或者,如果最大整数有多个副本,则其中一个)必须在矩阵的右下角(或者,对于一般多维数组,在所有索引都有其最大可能值的位置)。
-
@ZiyaoWei 我想知道,你在“重新排序”这个词中看到了什么歧义?
标签: arrays algorithm sorting multidimensional-array