从2D数组中获取5个最低值及其索引



如何从2D数组中获得5个最小数字的任何想法。我也想知道他们的指数。我正在使用Processing,但我很想找到正确的方法。

例如:我有一个具有以下值的4x4阵列:

 3-72-64-4 
 12-45-9-7 
 86-34-81-55 
 31-19-18-21 

我想得到数组中最低的五个数字,分别是3,4,7,9,12。问题是我也想知道他们原来的索引。

示例:

Array[0,0] = 3
Array[0,3] = 4
Array[1,3] = 7
Array[1,2] = 9

有什么公式或好的编程方法可以做到这一点吗?

实际上有一种非常好的做法适合您的情况。它被称为"合并排序算法"。它会对你的值进行排序,然后你只需要输出前5个值。这里有一个专门针对java的链接。编码和测试都很有趣!我做到了:D

很明显,您可以循环使用它,并使用2个for循环。获取原始索引会使其更加困难,因为这样就不能使用排序,因为排序更快。如果它是排序的,或者有某种模式,你可以使用搜索(二进制搜索(,但从你给出的数据来看,因为数据看起来是随机的,你真的做不了什么。

如果您不关心索引,可以尝试排序,例如ERed提到的合并排序或其他类型的排序(我更喜欢quickSort(。基本上,您将2D阵列视为1D阵列,并假设每个后续级别只是前一级别的延续(基本上,它只是一个被分割成碎片的巨大行(。

相关内容

  • 没有找到相关文章

最新更新