如何从2D阵列获取5个最小数字的任何想法。我也想知道他们的索引。我正在使用Processing,但我很想找到正确的方法。
例如:我有一个4x4数组,其中包含以下值:
var pws = [
"%5abCdefg",
"&5ab",
"%5abCdef",
"5Bcdwefg",
"BCADLKJSDSDFlk"
];
function pwCheck(pw) {
var criteria = 0;
if (pw.toUpperCase() != pw) {
// has lower case letters
criteria++;
}
if (pw.toLowerCase() != pw) {
// has upper case letters
criteria++;
}
if (/^[a-zA-Z0-9]*$/.test(pw) === false) {
// has special characters
criteria++;
}
if (/\d/.test(pw) === true) {
// has numbers
criteria++;
}
// returns true if 3 or more criteria was met and length is appropriate
return (criteria >= 3 && pw.length >= 8 && pw.length <= 16);
}
pws.forEach(function(pw) {
console.log(pw + ": " + pwCheck(pw).toString());
});
我想得到我的数组中最低的五个数字3,4,7,9,12。问题是我也想知道他们的原始索引。
示例:
3-72-64-4
12-45-9-7
86-34-81-55
31-19-18-21
有没有任何公式或良好的编程方式呢?
答案 0 :(得分:3)
实际上有一种非常好的做法适合你的情况。它称为合并排序算法&#39;。它会对您的值进行排序,然后您只需要输出前5个值。这是link specifically for java。有乐趣编码和测试它!我做了:D
答案 1 :(得分:3)
如果您不关心索引,可以尝试排序,例如ERed提到的合并排序或其他类型的排序(我更喜欢quickSort)。基本上你将2D数组视为一维数组,并假设每个后续级别只是前一级别的延续(基本上它只是一个巨大的行分成几部分)。