Массив отсортирован? - PullRequest
0 голосов
/ 20 апреля 2020
public class Problem4 {
     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = sc.nextInt();
         int length = sc.nextInt();
         int[] arr = new int[length];
         for (int i : arr) {
             arr[0] = sc.nextInt();
         }
         boolean issorted = true;

         if (arr[length - 2] > arr[length - 1]) {
             issorted = false;
         } else {

                 issorted = true;
             }

             if (issorted) {
                 System.out.println("Yes");
             } else {
                 System.out.println("No");
             }
         }
     }

У меня проблема с домашней работой. Моя задача только для печати. ​​Моё условие - написать программу, которая определяет, отсортирован ли массив целых чисел в порядке возрастания.

Примеры:

Вход: 1 2 4 8 12 34 200 2000 Выход: Да

Вход: 7 8 9 10 11 12 11 13 9 Outpur: Нет

Ответы [ 3 ]

2 голосов
/ 20 апреля 2020

Вместо этого следует использовать итерацию for-l oop, которая проверяет все элементы в массиве. Оператор if-else бесполезен для проверки всего массива.

for (int i = 0; i < arr.length - 1; i++) { // iterate from 0 to n-1 to avoid ArrayIndexOutOfBoundsException
    int current = arr[i];                  // the x-th element
    int next = arr[i+1];                   // the (x+1)th element
    if (current >= next) {                 // if the previous > than the following one
        isSorted = false;                  // ... the array is no longer sorted
        break;                             // ... exit the iteration (makes no secne to continue)
    }
}
1 голос
/ 20 апреля 2020

У меня есть один вкладыш в виде функции:

public static boolean isSorted(int[] array) {
    return IntStream.range(0, array.length - 1).allMatch(i -> array[i] <= array[i + 1]);
}
1 голос
/ 20 апреля 2020
  1. При сравнении элементов необходимо использовать al oop.
  2. Вы добавили элемент только по индексу, 0, используя arr[0] = sc.nextInt();. Это должно быть arr[i] = sc.nextInt();
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the size of the array: ");
        int length = sc.nextInt();
        int[] arr = new int[length];
        System.out.print("Enter " + length + " integers: ");
        for (int i = 0; i < length; i++) {
            arr[i] = sc.nextInt();
        }
        boolean isSorted = true;
        for (int i = 2; i < arr.length; i++) {
            if (arr[i - 2] > arr[i - 1]) {
                isSorted = false;
                break;
            }
        }
        if (isSorted) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}

Пробный прогон:

Enter the size of the array: 5
Enter 5 integers: 5 1 4 3 2
No

Другой пробный прогон:

Enter the size of the array: 5
Enter 5 integers: 1 2 3 4 5
Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...