📌  相关文章
📜  用于检查数组是否已排序和旋转的Java程序(1)

📅  最后修改于: 2023-12-03 15:11:17.431000             🧑  作者: Mango

用于检查数组是否已排序和旋转的Java程序

简介

这是一个用于检查数组是否已排序和旋转的Java程序。可以通过输入一个整数数组来判断该数组是否已被旋转并且是否已被排序。

实现

该程序使用了以下主要方法来实现功能:

isSortedAndRotated(int[] arr)

该方法用于检查给定的数组是否已排序并已被旋转。它首先检查数组是否完全排序。如果是,则返回 true。否则,它将分析数组的旋转点。如果旋转点可以被找到,则该方法返回 true。否则,返回 false。

下面是该方法的示例代码片段:

public static boolean isSortedAndRotated(int[] arr) {
    int length = arr.length;

    int i = 0;
    while (i < length - 1 && arr[i] <= arr[i + 1]) {
        i++;
    }

    if (i == length - 1) {
        return true;
    }

    int j = length - 1;
    while (j > 0 && arr[j - 1] <= arr[j]) {
        j--;
    }

    if (j == 0) {
        return true;
    }

    if (i != j) {
        return false;
    }

    return true;
}
main(String[] args)

该方法是程序的主要方法,它通过调用 isSortedAndRotated 方法来检查给定的数组。它首先从标准输入获取一个数组。然后,它使用 isSortedAndRotated 方法检查数组是否已排序并已被旋转。最后,它在标准输出上显示检查结果。

下面是该方法的示例代码片段:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter array length: ");
    int n = scanner.nextInt();

    int[] arr = new int[n];
    System.out.print("Enter array elements: ");
    for (int i = 0; i < n; i++) {
        arr[i] = scanner.nextInt();
    }

    boolean isSortedAndRotated = isSortedAndRotated(arr);
    System.out.println("The array is " + (isSortedAndRotated ? "" : "not ") + "sorted and rotated.");
}
使用

运行该程序后,将提示您输入一个整数数组。数组的第一行应包含数组的长度。然后,程序会提示您输入数组的元素。在输入数组元素后,程序将检查该数组是否已排序并已被旋转,并将显示检查结果。

下面是使用示例:

Enter array length: 5
Enter array elements: 3 4 5 1 2
The array is sorted and rotated.

Enter array length: 4
Enter array elements: 1 2 3 4
The array is not sorted and rotated.
结论

该程序是一个用于检查数组是否已排序和旋转的Java程序。它可以通过输入一个整数数组来判断该数组是否已被旋转并且是否已被排序。程序使用了无需任何特定库的简单方法来检查数组并提供结果。