Java 查找数组中的最小整数,然后将其与第一个单元格交换
我想做的是创建一个程序,用用户输入创建并填充数组,然后找到最小的数字并与数组的第一个单元格交换 我遇到的最大问题是如何找到最小整数,但能够交换它,因为当我这样做时:Java 查找数组中的最小整数,然后将其与第一个单元格交换,java,arrays,Java,Arrays,我想做的是创建一个程序,用用户输入创建并填充数组,然后找到最小的数字并与数组的第一个单元格交换 我遇到的最大问题是如何找到最小整数,但能够交换它,因为当我这样做时: for(int i = 0; i < swap.length; i++){ if(smallest > swap[i]){ smallest = swap[i]; 它没有给我想要的输出,我想知道如何找到最小的数字,并保留数组单元号,以便使用它进行交换 这是完整的当
for(int i = 0; i < swap.length; i++){
if(smallest > swap[i]){
smallest = swap[i];
它没有给我想要的输出,我想知道如何找到最小的数字,并保留数组单元号,以便使用它进行交换
这是完整的当前代码:
import java.util.Scanner;
import java.util.Arrays;
public class SmallestSwap {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Size of array?");
int n = sc.nextInt();
int [] swap = new int[n];
int smallest = Integer.MAX_VALUE;
for(int i = 0; i <swap.length; i++){
System.out.println("Please enter a number: ");
swap[i] = sc.nextInt();
}
for(int i = 0; i < swap.length; i++){
if(smallest > swap[i]){
smallest = swap[i];
}
}
int temp = swap[0];
swap[0] = smallest;
smallest = temp;
System.out.println("\n");
for(int element : swap){
System.out.println(element);
}
}
import java.util.Scanner;
导入java.util.array;
公共类小型交换{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“数组大小?”);
int n=sc.nextInt();
int[]交换=新的int[n];
int最小值=整数最大值;
for(int i=0;i交换[i]){
最小=交换[i];
}
}
int temp=交换[0];
交换[0]=最小值;
最小值=温度;
System.out.println(“\n”);
for(int元素:交换){
系统输出打印项次(元素);
}
}
}这是指针和值的问题
smallest = swap[i];
不保存对数组中真实项的引用swap[i]
。在最小值中
只能找到最小值。
因此,如果要交换值,必须保存索引。
这是密码
import java.util.Scanner;
import java.util.Arrays;
public class swap {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Size of array?");
int n = sc.nextInt();
int [] swap = new int[n];
int index_smallest = 0;
int smallest = Integer.MAX_VALUE;
for(int i = 0; i <swap.length; i++){
System.out.println("Please enter a number: ");
swap[i] = sc.nextInt();
}
for(int i = 0; i < swap.length; i++){
if(smallest > swap[i]){
smallest = swap[i];
index_smallest = i;
}
}
int temp = swap[0];
swap[0] = swap[index_smallest];
swap[index_smallest] = temp;
System.out.println("\n");
for(int element : swap){
System.out.println(element);
}
}
}
import java.util.Scanner;
导入java.util.array;
公共类交换{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“数组大小?”);
int n=sc.nextInt();
int[]交换=新的int[n];
int index_最小值=0;
int最小值=整数最大值;
for(int i=0;i交换[i]){
最小=交换[i];
指数_=i;
}
}
int temp=交换[0];
交换[0]=交换[index_];
交换[索引]=临时;
System.out.println(“\n”);
for(int元素:交换){
系统输出打印项次(元素);
}
}
}
您还应该记住最小元素的索引,以便将第一个元素放在那里,swap[smallestIndex]=temp代码>您还应该维护元素的索引,比如int smallestIndex=0;对于(inti=0;iswap[i]){minimate=swap[i];smallestIndex=i;}}}int-temp=swap[0];交换[0]=最小值;最小值=温度;swap[smallestIndex]=最小值;这回答了你的问题吗?谢谢,我从来不知道你能做到。:)@Mindaugas那是我过去经常交换的帖子。
import java.util.Scanner;
import java.util.Arrays;
public class swap {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Size of array?");
int n = sc.nextInt();
int [] swap = new int[n];
int index_smallest = 0;
int smallest = Integer.MAX_VALUE;
for(int i = 0; i <swap.length; i++){
System.out.println("Please enter a number: ");
swap[i] = sc.nextInt();
}
for(int i = 0; i < swap.length; i++){
if(smallest > swap[i]){
smallest = swap[i];
index_smallest = i;
}
}
int temp = swap[0];
swap[0] = swap[index_smallest];
swap[index_smallest] = temp;
System.out.println("\n");
for(int element : swap){
System.out.println(element);
}
}
}