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])