当前位置: 首页 > 知识库问答 >
问题:

在不带集合的ArrayList中查找最小整数

冯宪
2023-03-14

我试图找到最小的整数中的ArrayList只是使用两个简单的循环。我最初尝试了一个for循环,但是它没有正确更新。我还没有学习集合,所以这应该在不使用任何集合代码的情况下完成。

这就是我所拥有的:

public static void printInOrder(ArrayList<Integer> data){

 int minIndex = 0 ;
 for(int i = 0; i < data.size(); i++){
   minIndex = i;
   for(int j = i + 1; j < data.size() - 1; j++){
     if(data.get(j) < data.get(minIndex)){
       minIndex = j;}

   }
   System.out.println(data.get(minIndex) + " ");
 }
}//printInOrder

我的最小值似乎总是列表中的最后一个值,所以我尝试打印数据。在第一个for循环中获取(minIndex)以查看发生了什么,它似乎会更新不同的值,最后更新最后一个值。我不知道为什么会这样。

这是它正在打印的内容,例如:

原始列表:[47, 19, 46, 42, 15, 26, 36, 27, 13, 15, 1, 40, 34, 14, 6, 34, 28, 12, 15, 13]打印最小:1 1 1 1 1 1 1 1 1 1 1 6 6 6 6 12 12 12 15 13

共有3个答案

东门仲卿
2023-03-14

未经测试:

public static int calculateMinIndex(final ArrayList<Integer> data) {
    int minIndex = 0;
    for(int i = 0; i < data.size() - 1; i++) {
        if(data.get(i) > data.get(i+1)) {
            minIndex = i+1;
        }
    }
    return minIndex;
}
吴经略
2023-03-14

你不应该做排序来找到最小值

这是密码

public static void Min(int arr[])
{
   int min = arr[0];
    int i=0;
while(i<arr.length)
 {
        if (arr[i] < min) {
            min=arr[i];
        }
    }
    return min;
}
宗穆冉
2023-03-14

如果希望避免使用集合,可以使用此快速解决方案

public static void printInOrder(ArrayList<Integer> data){

    Integer[] array = (Integer[]) data.toArray();
    Arrays.sort(array);
    System.out.println(array[0]);

}

在这种情况下,最小的整数总是在索引0处。

或者,如果您确实希望使用循环遍历整个ArrayList,我建议您将实际值存储在变量中,而不是索引中。这样做,您将获得:

public static void printInOrder(ArrayList<Integer> data){

    int minInteger = data.get(0);
    for(int i = 1; i < data.size(); i++){
        if(data.get(i) < minInteger) minInteger= data.get(i);
    }
    System.out.println(minInteger);

}
 类似资料:
  • 问题内容: 我想使用 Java流 来迭代 列表 并找到最低价格。以下说明,但不起作用(因为无法接受。 问题答案: 既然已经是,它就这么简单:

  • 给定一个正整数数组,找出子集的最小数目,其中: 子集中每个元素的总和不超过一个值,k。 数组中的每个元素在任何子集中只使用一次 数组中的所有值都必须出现在任何子集中。 基本上,一个“填充”算法,但需要最小化容器,并需要确保所有东西都被填满。我目前的想法是按降序排序,当总和超过k时开始创建集合,开始下一个,但不确定什么是更好的方法。 编辑: Ex: 在输出集合中,所有1-5都被使用,并且在集合中仅使

  • 问题内容: 我们需要在分配中递归地找到一个数组中的第二个最小整数。但是,为了更好地理解该主题,我想先通过本网站进行迭代,然后自己进行递归。 不幸的是,迭代地进行相当混乱。我知道该解决方案很简单,但我无法解决。 到目前为止,以下是我的代码: 这适用于一些数字,但不是全部。数字会变化,因为内部if条件的效率不如外部if条件的效率。 禁止阵列重排。 问题答案: 试试这个。当最小的数字是第一个时,第二个条

  • //我试图在我的数组列表中找到最大的字符串并将其打印出来,还包括最大元素所在的索引,并将其打印到屏幕上。我只是想知道我哪里出错了。 谢谢

  • 我在这里写了这两个方法来查找最小和最大值。#2是基于这篇文章的这个答案。 如果我运行这样的简单基准测试: } 我通常会得到这样的结果: 我把算法弄错了吗?我本以为至少会有类似的结果。

  • 我想既然查询的语法是: 查询的语法是 忽略案例集合查询的语法为: 但这似乎不起作用(它仍然区分大小写)。 想法? 编辑: 它也不是。