Arrays 获取并输出三个最低数字的数组

Arrays 获取并输出三个最低数字的数组,arrays,Arrays,我对编程有点陌生,只是想弄明白如何解决这个问题。我需要取一个数组,找到三个最小的数字,把它们放入第二个数组,然后打印出来。我知道如何将元素从一个数组复制到另一个数组,但不确定如何找到最低的。这就是我迄今为止所做的: int[] array1 = new int[]{1,2,3,4,5,6,7,8}; int[] array2 = new int[array1.length]; for (int i=0; i<array1.length;i++){ array2[i]

我对编程有点陌生,只是想弄明白如何解决这个问题。我需要取一个数组,找到三个最小的数字,把它们放入第二个数组,然后打印出来。我知道如何将元素从一个数组复制到另一个数组,但不确定如何找到最低的。这就是我迄今为止所做的:

int[] array1 = new int[]{1,2,3,4,5,6,7,8};
int[] array2 = new int[array1.length];

     for (int i=0; i<array1.length;i++){
     array2[i] = array1[i]; } System.out.print(Arrays.toString(array2));
int[]array1=新的int[]{1,2,3,4,5,6,7,8};
int[]array2=新的int[array1.length];

对于(int i=0;i您可以对数组进行排序,并将前3个元素复制到新数组中,例如:

int[] array = new int[]{1,5,7,0,8,2,3};
Arrays.sort(array);
int newArray[] = new int[3];
for(int i=0 ; i<3 ; i++){
    newArray[i] = array[i];
}
System.out.println(Arrays.toString(newArray));
int[]数组=新的int[]{1,5,7,0,8,2,3};
数组。排序(数组);
int newArray[]=新int[3];

对于(int i=0;i您可以对数组进行排序,并将前3个元素复制到新数组中,例如:

int[] array = new int[]{1,5,7,0,8,2,3};
Arrays.sort(array);
int newArray[] = new int[3];
for(int i=0 ; i<3 ; i++){
    newArray[i] = array[i];
}
System.out.println(Arrays.toString(newArray));
int[]数组=新的int[]{1,5,7,0,8,2,3};
数组。排序(数组);
int newArray[]=新int[3];
对于(int i=0;i,如果您有Java 8:

int[] answer = Arrays.stream(array).sorted().limit(3).toArray();
如果您有Java 8:

int[] answer = Arrays.stream(array).sorted().limit(3).toArray();

更优化的方法是使用

final Integer[]number=新整数[]{23,23,24,2,42,4235456,45,7};
最终可数积分=可数循环(数字);
最终列表bottom3=Ordering.natural().leastOf(integeritable,3);

它使用一个O(n)算法,只使用一次传递和O(k)额外内存,在这种情况下k是3。

更优化的方法是使用

final Integer[]number=新整数[]{23,23,24,2,42,4235456,45,7};
最终可数积分=可数循环(数字);
最终列表bottom3=Ordering.natural().leastOf(integeritable,3);

它使用O(n)算法,只使用一次传递和O(k)额外内存,在这种情况下k为3。

对整个数组进行排序是一种方法,但由于数组的大小可能未知,排序可能需要更多时间,因此最好将前3个最小整数冒泡排序到顶部。例如:

int[] arr = {9, 5, 2, 1, 0, 5, -10, 25, 45, -25, 90, -72};
int temp;
for(int n = 0; n < 3; n++) {
    for(int i = arr.length-1; i >= 1; i--) {
        if(arr[i] < arr[i-1]) {
            temp = arr[i - 1];
            arr[i - 1] = arr[i];
            arr[i] = temp;
        }
    }
}

for(int i=0; i<3; i++) {
    System.out.println(arr[i]);
}
/* Result:
-72
-25
-10
*/
int[]arr={9,5,2,1,0,5,10,25,45,25,90,72};
内部温度;
对于(int n=0;n<3;n++){
对于(int i=arr.length-1;i>=1;i--){
if(arr[i]对于(int i=0;i对整个数组进行排序是一种方法,但由于数组的大小可能未知,排序可能需要更多时间,因此最好将前3个最小整数冒泡排序到顶部。例如:

int[] arr = {9, 5, 2, 1, 0, 5, -10, 25, 45, -25, 90, -72};
int temp;
for(int n = 0; n < 3; n++) {
    for(int i = arr.length-1; i >= 1; i--) {
        if(arr[i] < arr[i-1]) {
            temp = arr[i - 1];
            arr[i - 1] = arr[i];
            arr[i] = temp;
        }
    }
}

for(int i=0; i<3; i++) {
    System.out.println(arr[i]);
}
/* Result:
-72
-25
-10
*/
int[]arr={9,5,2,1,0,5,10,25,45,25,90,72};
内部温度;
对于(int n=0;n<3;n++){
对于(int i=arr.length-1;i>=1;i--){
if(arr[i]对于(int i=0;iSort?Java的
array.sort
提供
O(n log(n))
性能。更好的方法是循环数组并获得复杂度最小的3个元素
O(n)
另外,我们正在更改数组的顺序(这可能很重要,我们不知道)由于OP是编程的新手,使用这种方法比声明和操作3个变量更容易。此外,如果不需要更改主数组,我们可以使用
System.arrayCopy
。Sort?Java的
Arrays.Sort
提供
O(n log(n))
performance。更好的方法是循环数组并获得复杂度最小的3个元素
O(n)
另外,我们正在更改数组的顺序(这可能很重要,我们不知道)。由于OP是编程的新手,使用这种方法比声明和操作3个变量更容易。此外,如果不需要更改主数组,我们可以使用
System.arrayCopy
。这更好,因为我们不更改原始数组。这更好,因为我们不更改原始数组。有趣,谢谢!我也必须这样做在我需要找到前三位数字的地方用另一种方法。我可能也可以用它来计算,对吧?当然可以修改一些代码。是的,你可以使用相同的数组和方法,除了更改
if(arr[I]
if(arr[I]>arr[I-1])
很有趣,谢谢!我还必须用另一种方法找到前三位数字。我可能也可以用这个方法来计算,对吧?当然可以修改一些代码。是的,除了将
if(arr[I]
更改为
if(arr[I]>arr[I-1])