Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个函数,用于检查数组中的任何索引是否具有相同的值_Java_Arrays_Indexing - Fatal编程技术网

Java 创建一个函数,用于检查数组中的任何索引是否具有相同的值

Java 创建一个函数,用于检查数组中的任何索引是否具有相同的值,java,arrays,indexing,Java,Arrays,Indexing,我试图创建一个函数,检查数组中的任意两个索引是否具有相同的值。我意识到下面的代码只检查第一个索引是否与第二个相同,而不检查第一个索引是否与第三个、第四个相同,依此类推 我尝试在for循环中使用for循环来比较每个索引,但我不知道如何让它工作 由于我当前的实现,我还得到了一个索引越界异常,因为I+1超出了数组的长度 如果有人能帮我解决代码,并向我解释它是如何工作的,那就太好了!谢谢 public class Values { public static void main (String[]a

我试图创建一个函数,检查数组中的任意两个索引是否具有相同的值。我意识到下面的代码只检查第一个索引是否与第二个相同,而不检查第一个索引是否与第三个、第四个相同,依此类推

我尝试在for循环中使用for循环来比较每个索引,但我不知道如何让它工作

由于我当前的实现,我还得到了一个索引越界异常,因为I+1超出了数组的长度

如果有人能帮我解决代码,并向我解释它是如何工作的,那就太好了!谢谢

public class Values {


public static void main (String[]args){

    int[] A = {0,1,2,1,4};

    for(int i = 0;i<=A.length;i++){

        int n = i+1;
        if(A[i] == A[n]){

        System.out.println("Index " + i + " is the same value as index " + n);
        System.out.println("Therefore, not all of the values in the array are different");
            break;
        }

    }
    System.out.println("All indexes in the array contain different values");
}

}
公共类值{
公共静态void main(字符串[]args){
int[]A={0,1,2,1,4};
for(inti=0;i
for(inti=0;i
for(int i=0;i
for(int i=0;i
for(int i=0;i
获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素),但只能访问索引A[0]、…、A[4]-因此,您应该通过数组进行如下循环:
for(int i=0;i获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素)但是只有索引A[0],…,A[4]可以访问-因此您应该通过数组进行如下循环:
for(int i=0;i获得越界异常的原因是因为数组的长度为5(1,2,3,4,5个元素),但只有索引A[0],…,A[4]可以访问-因此您应该通过数组进行如下循环:
for(int i=0;i获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素),但只能访问索引A[0],…,A[4]-因此,您应该通过数组进行如下循环:
for(int i=0;i最有效的方法是首先排序,然后查找任何两个相邻元素是否相等:

Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++) 
    if (A[i] == A[i+1])
        // do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)


使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。

最有效的方法是先排序,然后查找任意两个相邻元素是否相等:

Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++) 
    if (A[i] == A[i+1])
        // do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)


使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。

最有效的方法是先排序,然后查找任意两个相邻元素是否相等:

Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++) 
    if (A[i] == A[i+1])
        // do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)


使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。

最有效的方法是先排序,然后查找任意两个相邻元素是否相等:

Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++) 
    if (A[i] == A[i+1])
        // do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)


使用嵌套循环具有O(n2)时间复杂度,即使是适度的数组大小也会对其产生影响。此外,代码更简单。

数组元素,您的意思是,不是索引?索引必须是唯一的。提示:您需要将[i]与[i+1]进行比较,还需要将[i+2]、[i+3]…A[length-1]进行比较。数组元素,你的意思是,不是索引?索引必须是唯一的。提示:你需要将[i]与[i+1]进行比较,但也需要将[i+2],A[i+3]…A[length-1]。数组元素,你的意思是,不是索引?索引必须是唯一的。提示:你需要将[i]与[i+1]进行比较,还需要将[i+2],A[i+3]…A[length-1]进行比较.数组元素,你的意思是,不是索引?索引必须是唯一的。提示:需要将[i]与[i+1]进行比较,但也需要将[i+2],A[i+3]…A[length-1]。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j==j。两个循环都不需要从0到长度,看看Sloth的答案。然后你不必检查i==j。我提出了一个n(n+1)的算法/2次迭代。它不包含交换操作,只包含比较。您认为,n应该有多大才能使您的算法显示更好的基准?@sloth我运行了一些公平的基准测试:如果值的范围很窄(例如与数组长度相同),因此重复非常频繁,则嵌套循环的性能通常比排序+循环高10-100倍(数组越大,嵌套的性能就越好,而不是排序+循环)。但是,如果重复次数很少,则排序+循环会在大型数组中获胜。当值的范围约为500*数组长度时,会发生交叉,但在小数组大小(<200)时,嵌套循环仍然获胜。我提出了使用n(n+1)的算法/2次迭代。它不包含交换操作,只包含比较。您如何