从二维数组中获取 5 个最低值及其索引
Getting the 5 lowest values with their index from a 2D Array
关于如何从二维数组中获取最小 5 个数的任何想法。我也想知道他们的 index。我正在使用 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
是否有任何公式或好的编程方法可以做到这一点?
实际上有一个非常好的做法适合您的情况。它被称为 'merge sort algorithm'。它会对你的值进行排序,然后你只需要输出前 5 个值。这是 link specifically for java。享受编码和测试的乐趣吧!我做到了 :D
很明显,您可以循环遍历它并使用 2 个 for 循环进行暴力破解。获取原始索引会使它变得更难,因为那样你就不能使用更快的排序。如果它是排序的或者如果有某种模式,你可以使用搜索(二进制搜索)但是从你给出的内容来看,看起来数据是随机的,你真的不能做太多。
如果你不关心索引,你可以尝试排序,比如ERed提到的合并排序或者其他类型的排序(我更喜欢quickSort)。基本上,您将 2D 数组视为 1D 数组,并假设每个后续级别只是前一个级别的延续(基本上它只是一个巨大的行被分解成碎片)。
关于如何从二维数组中获取最小 5 个数的任何想法。我也想知道他们的 index。我正在使用 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
是否有任何公式或好的编程方法可以做到这一点?
实际上有一个非常好的做法适合您的情况。它被称为 'merge sort algorithm'。它会对你的值进行排序,然后你只需要输出前 5 个值。这是 link specifically for java。享受编码和测试的乐趣吧!我做到了 :D
很明显,您可以循环遍历它并使用 2 个 for 循环进行暴力破解。获取原始索引会使它变得更难,因为那样你就不能使用更快的排序。如果它是排序的或者如果有某种模式,你可以使用搜索(二进制搜索)但是从你给出的内容来看,看起来数据是随机的,你真的不能做太多。
如果你不关心索引,你可以尝试排序,比如ERed提到的合并排序或者其他类型的排序(我更喜欢quickSort)。基本上,您将 2D 数组视为 1D 数组,并假设每个后续级别只是前一个级别的延续(基本上它只是一个巨大的行被分解成碎片)。