Java中如何从数组返回位置
我得到了一个数组。我需要从中获取最小值,然后返回值在数组中的位置。我是Java新手,我只有Python方面的经验。这是到目前为止我的代码Java中如何从数组返回位置,java,arrays,Java,Arrays,我得到了一个数组。我需要从中获取最小值,然后返回值在数组中的位置。我是Java新手,我只有Python方面的经验。这是到目前为止我的代码 public static int minPosition (int[] list) { int currMin = list[0]; int index = list.length-1; int currPos = 0; while (index >= 0){ if (currMin > list
public static int minPosition (int[] list) {
int currMin = list[0];
int index = list.length-1;
int currPos = 0;
while (index >= 0){
if (currMin > list[index])
currMin = list[index];
if (currMin > list[index])
currPos = index;
index--;
}
return currPos;
}
这些是自动调用的数组
minPosition(new int[] { -7 }));
minPosition(new int[] { 1, -4, -7, 7, 8, 11 }));
minPosition(new int[] { -13, -4, -7, 7, 8, 11 }));
minPosition(new int[] { 1, -4, -7, 7, 8, 11, -9 }));
提前谢谢你的建议
if (currMin > list[index])
currMin = list[index];
if (currMin > list[index])
currPos = index;
如果第一个条件为真,则在检查第二个条件时,curMin
将完全等于列表[索引]
,因此它永远不会大于
你可能想要
if (currMin > list[index]) {
currMin = list[index];
currPos = index;
}
如果第一个条件为真,则在检查第二个条件时,curMin
将完全等于列表[索引]
,因此它永远不会大于
你可能想要
if (currMin > list[index]) {
currMin = list[index];
currPos = index;
}
可以添加此方法并传入整数数组。它将返回数组中具有最小值的整数的索引位置
public static int getMinIndex(int[] array) {
int minIndex = -1;
int currentMinValue = Integer.MAX_VALUE;
for(int i =0; i< array.length; i++) {
if(array[i] < currentMinValue) {
minIndex = i;
currentMinValue = array[i];
}
}
return minIndex;
}
公共静态int getMinIndex(int[]数组){
int minIndex=-1;
int currentMinValue=Integer.MAX\u值;
for(int i=0;i
您可以添加此方法并传入整数数组。它将返回数组中具有最小值的整数的索引位置
public static int getMinIndex(int[] array) {
int minIndex = -1;
int currentMinValue = Integer.MAX_VALUE;
for(int i =0; i< array.length; i++) {
if(array[i] < currentMinValue) {
minIndex = i;
currentMinValue = array[i];
}
}
return minIndex;
}
公共静态int getMinIndex(int[]数组){
int minIndex=-1;
int currentMinValue=Integer.MAX\u值;
for(int i=0;i
您可以使用流执行此操作:
IntStream(0, list.length).min((i1, i2) -> list[i1] - list[i2]).get();
您可以使用流执行此操作:
IntStream(0, list.length).min((i1, i2) -> list[i1] - list[i2]).get();
此解决方案不需要跟踪当前最小值。这使得代码更容易理解,并减少了出错的空间。它还从一开始就开始搜索,而您的原始代码并没有这样做。(我不知道为什么会这样,因为您可能希望第一个索引具有最小值,而不是最后一个。)
公共静态int minPosition(int[]列表){
if(list==null | | list.length=0){
返回-1;
}
int-minPos=0;
for(int i=0;i
此解决方案不需要跟踪当前最小值。这使得代码更容易理解,并减少了出错的空间。它还从一开始就开始搜索,而您的原始代码并没有这样做。(我不知道为什么会这样,因为您可能希望第一个索引具有最小值,而不是最后一个。)
公共静态int minPosition(int[]列表){
if(list==null | | list.length=0){
返回-1;
}
int-minPos=0;
for(int i=0;i
假设数组为非空数组,可以先对列表进行排序,然后从排序后的列表返回第一个。这将不像上面的一些示例那样有效,但代码将更短
public static int minPosition (int[] list) {
Arrays.sort(list);
return list[0];
}
假设一个非空数组,您可以首先对列表进行排序,然后从排序后的列表返回第一个。这将不像上面的一些示例那样有效,但代码将更短
public static int minPosition (int[] list) {
Arrays.sort(list);
return list[0];
}
别介意你是对的,我的代码里还有一个小错误。非常感谢你!别介意你是对的,我的代码里还有一个小错误。非常感谢你!来自知识不足的人的问题。将最小值存储到变量而不是在每次迭代中使用list[minPos]
访问它不是更快吗?@Reti43它更快,但是索引数组将在O(1)时间内发生,即,无论数组有多大,它总是需要相同的时间。在当今计算速度如此之快的情况下,我更喜欢精确性而不是边际速度的提高。这个问题来自一个知识不足的人。将最小值存储到变量而不是在每次迭代中使用list[minPos]
访问它不是更快吗?@Reti43它更快,但是索引数组将在O(1)时间内发生,即,无论数组有多大,它总是需要相同的时间。在当今计算速度如此之快的情况下,我更喜欢精度而不是边际速度的提高。问题是最小值的位置,而不是最小值的位置。您可以重写您的答案,如返回新的ArrayList(list).indexOf(list[0])代码>。该问题询问的是最小值的位置,而不是值。您可以重写您的答案,如返回新的ArrayList(list).indexOf(list[0])代码>。