Как проверить, больше ли число, чем все остальные числа справа от него в массиве - PullRequest
0 голосов
/ 21 июня 2019

Например, у меня есть массив этих значений

[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.

Ответы [ 5 ]

1 голос
/ 21 июня 2019

Первый цикл должен работать 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++;
            }
        }
    }
1 голос
/ 21 июня 2019

Вы получили ошибку во втором цикле

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++;
    }
}

С другой стороны, мне интересно, как это компилируется ...

1 голос
/ 21 июня 2019

Вы почти правильно поняли:

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++;
        }
    }
}
0 голосов
/ 21 июня 2019

Вот код запуска

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

    }
}

Ваша логика верна. Я думаю, что инициализация переменной подсчета неверна.вы могли бы инициализировать в для цикла

0 голосов
/ 21 июня 2019

Я думаю, что вам нужно общее количество меньших элементов в массиве, перемещающихся справа налево. Если так, то вот решение.

Вот ваш массив. [10, 14, 2, 1, 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...