例如,我有一个这些值的数组
[10、14、2、1、5、7、8、0]
如果我从10开始,它将大于2、1、5、7、8和0。然后14将大于2、1、5、7、8和0,依此类推。
有没有办法让我遍历某个数组并找到从左到右移动的较小数字的总数?
这是我尝试过的:
for(int i = 0; i < array.length; i++) {
for(int j = i + 1; j < array.length; j++) {
if(array[i] > array[j]) {
count++;
}
}
使用
[10、14、2、1、5、7、8、0]
我希望输出18
,但实际输出是1
。
答案 0 :(得分:1)
您几乎完全正确:
int count = 0;
int[] array = {10, 14, 2, 1, 5, 7, 8, 0};
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
count++;
}
}
}
答案 1 :(得分:1)
您在第二个循环中遇到了错误
for(int i = 0; i < array.length; i++) {
for(int j = i + 1; j < array[i].length; j++) { // HERE is mistake, array.length
if(array[i] > array[j]) {
count++;
}
}
另一方面,我想知道它如何编译...
答案 2 :(得分:1)
第一个循环应工作array.lenth-1次,否则也将给出正确的答案。
int count = 0;
int[] array = new int[]{ 10, 14, 2, 1, 5, 7, 8, 0 };
for(int i = 0; i < array.length-1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
count++;
}
}
}
答案 3 :(得分:0)
我认为您不希望数组中的所有较小元素从右向左移动。如果是这样,这是一个解决方案。
这是您的阵列。 [10,14,2,1,5,5,7,8,0]
int[] countArray= new int[array.length];
for(int i = 0; i < array.length; i++) {
int count=0;
for(int j = i + 1; j < array.length-1; j++) {
if(array[i] > array[j]) {
count++;
}
}
countArray[i]=count;
}
答案 4 :(得分:0)
这是运行代码
public class Teas {
public static void main(String[] args) {
int[] array = {
10,
14,
2,
1,
5,
7,
8,
0
};
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
count++;
}
}
}
System.out.println(count);
}
}
您的逻辑是正确的,我认为计数变量初始化错误。 您可能会在for循环中初始化