在Java中查找不带array.sort的数组列表中的最小整数值
如何在不更改数组顺序的情况下找到int数组中的最小值 代码段:在Java中查找不带array.sort的数组列表中的最小整数值,java,arrays,algorithm,integer,Java,Arrays,Algorithm,Integer,如何在不更改数组顺序的情况下找到int数组中的最小值 代码段: int[] tenIntArray = new int [10]; int i, userIn; Scanner KyBdIn = new Scanner(System.in); System.out.println("Please enter 10 integer numbers "); for(i = 0; i < tenIntArray.length; i++){
int[] tenIntArray = new int [10];
int i, userIn;
Scanner KyBdIn = new Scanner(System.in);
System.out.println("Please enter 10 integer numbers ");
for(i = 0; i < tenIntArray.length; i++){
System.out.println("Please enter integer " + i);
userIn = KyBdIn.nextInt();
tenIntArray[i] = userIn;
}
int[]tenIntArray=newint[10];
inti,userIn;
扫描仪KyBdIn=新扫描仪(System.in);
System.out.println(“请输入10个整数”);
对于(i=0;i
我不知道如何在tenIntArray中找到最小的数组值并显示位置
例如,数组包含-[50、8、2、3、1、9、8、7、54、10]
输出应显示“数组中位置5处的最小值为1
”图应有用:
然后回答你的问题,你会在纸上做什么
tenIntArray[0]
tenIntArray[0]
处初始化最小值)现在编写算法应该很简单。数组的第一个索引是零。一个也没有
for(i = 0; i < tenIntArray.length; i++)
for(i=0;i
所以纠正这个。
您询问的代码是:
int small = Integer.MAX_VALUE;
int i = 0;
int index = 0;
for(int j : tenIntArray){
if(j < small){
small = j;
i++;
index = i;
}
}
System.out.print("The smallest value is"+small+"at position"+ index +"in array");
int small=Integer.MAX\u值;
int i=0;
int指数=0;
对于(int j:Tenitarray){
if(j
试试这个:
//Let arr be your array of integers
if (arr.length == 0)
return;
int small = arr[0];
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] < small) {
small = arr[i];
index = i;
}
}
//让arr成为整数数组
如果(arr.length==0)
返回;
int small=arr[0];
int指数=0;
对于(int i=0;i
我提议的方法将找到min
和max
public static void main(String[] args) {
findMinMax(new int[] {10,40,50,20,69,37});
}
public static void findMinMax(int[] array) {
if (array == null || array.length < 1)
return;
int min = array[0];
int max = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (max < array[i]) {
max = array[i];
}
if (min > array[i]) {
min = array[i];
}
}
System.out.println("min: " + min + "\nmax: " + max);
}
publicstaticvoidmain(字符串[]args){
findMinMax(新的int[]{10,40,50,20,69,37});
}
公共静态void findMinMax(int[]数组){
if(array==null | | array.length<1)
返回;
int min=数组[0];
int max=数组[0];
for(int i=1;i数组[i]){
min=数组[i];
}
}
System.out.println(“最小值:+min+”\n最大值:+max);
}
显然,这不是一个最优化的解决方案,但它会为您工作。它使用简单的比较来跟踪min
和max
值。输出为:
min:10
max:69
int[]输入={12,9,33,14,5,4};
int[] input = {12,9,33,14,5,4};
int max = 0;
int index = 0;
int indexOne = 0;
int min = input[0];
for(int i = 0;i<input.length;i++)
{
if(max<input[i])
{
max = input[i];
indexOne = i;
}
if(min>input[i])
{
min = input[i];
index = i;
}
}
System.out.println(max);
System.out.println(indexOne);
System.out.println(min);
System.out.println(index);
int max=0;
int指数=0;
int指数=0;
int min=输入[0];
对于(inti=0;i,这里是函数
public int getIndexOfMin(ArrayList<Integer> arr){
int minVal = arr.get(0); // take first as minVal
int indexOfMin = -1; //returns -1 if all elements are equal
for (int i = 0; i < arr.size(); i++) {
//if current is less then minVal
if(arr.get(i) < minVal ){
minVal = arr.get(i); // put it in minVal
indexOfMin = i; // put index of current min
}
}
return indexOfMin;
}
public int getIndexOfMin(ArrayList arr){
int minVal=arr.get(0);//取第一个作为minVal
int indexOfMin=-1;//如果所有元素都相等,则返回-1
对于(int i=0;i
使用Java8流,您可以创建一个二进制运算符,用于比较两个整数并返回其中最小的整数
让arr是你的数组
int[] arr = new int[]{54,234,1,45,14,54};
int small = Arrays.stream(arr).reduce((x, y) -> x < y ? x : y).getAsInt();
int[]arr=newint[]{54234,1,45,14,54};
intsmall=Arrays.stream(arr).reduce((x,y)->x
ouch.索引计数从0开始,而不是1。作为一个条件,您应该使用iint[]tenIntArray={1,-8,2,2,0,-15};
,您将把索引
变量增加3倍。但这不会给您数组中最小值的正确索引。您必须跟踪当前索引,并在找到最小值时更新另一个变量(就像您对small
所做的那样)。啊,我明白了。谢谢。如果我从int index=-1;
开始,对吗?谢谢你的帮助:你应该在if
语句之外增加I
,因为即使当前索引不是最小的,它也应该增加I
,以便跟踪当前索引。谢谢你的帮助!我可以知道吗这种方法的时间复杂度是多少?我猜是O(n)