【发布时间】:2013-01-13 16:47:44
【问题描述】:
我有一个类似于下面描述的多维数组:
Matrix => array(
[0] => array( [0] => 7, [1] => 'hello' ),
[1] => array( [0] => 3, [1] => 'there' ),
[2] => array( [0] => 1, [1] => 'world' ),
)
我想要实现的是使用 Matrix[i][0] 的值对这个数组进行排序。最有效的方法是什么?我研究了递归 QuickSort 函数的可能性,但它相当复杂,因为我是多维数组。有很多快速排序的例子,但没有一个能处理将“Array of Array of String”作为输入。
如果我的文字看起来乱码,请要求澄清。我对 Delphi 还是很陌生。
【问题讨论】:
-
您没有字符串数组。你说你拥有的是Delphi无法代表的东西。您不能拥有异构数组(具有多种类型值的数组,例如整数和字符串)。您应该拥有的是一个记录数组,其中记录的第一个字段是一个整数,第二个字段是一个字符串。将其视为一个记录数组,是否更容易理解 any 排序函数应该能够同样良好地处理这些数据?顶级数组的数据类型(整数、字符串、记录、数组等)无关紧要。
-
你能贴出你的数组声明的真实代码吗?
-
你尝试过什么,你在哪里卡住了? QuickSort 是一个相当简单的算法,特别是如果你找到一个现成的实现来改变你自己的需要。 QuickSort 并不真正关心数组中的内容,它所需要的只是一种比较两个元素的方法以及一种在数组中移动它们的方法。忽略您的数组是多维的这一事实:您正在对一个简单的一维数组进行排序,其中数组的元素恰好也是一维数组。
标签: string delphi sorting multidimensional-array delphi-2007