簡體   English   中英

檢查數組是否使用遞歸排序

[英]Check if array is sorted using recursion

即使對於 unsorted(isNonDescending) arrays,我的答案也是真實的。錯誤在哪里? 我只想從數組的開頭將數組分解成更小的問題。

//檢查isNonDescending。

public class AlgoAndDsClass {

    public static void main(String args[]) {

        int[] unsortedArry = { 1, 2, 3, 4 };
        int[] unsortedArry2 = { 1, 2, 4, 3 };
        System.out.println(isSorted(unsortedArry, unsortedArry.length));
       System.out.println(isSorted(unsortedArry2, unsortedArry2.length));


    }

    private static boolean isSorted(int[] arr, int size) {
        if (size == 0 || size == 1)
            return true;

        if (arr[0] > arr[1]) {
            return false;
        }
        System.out.println(arr.length);
        boolean smallwork = isSorted(arr, size - 1);

        return smallwork;

    }

您繼續檢查相同的 2 個元素,請嘗試使用 size 變量代替數組索引。 例如,如果對前 2 個元素進行了排序,你會得到 true,那是因為你只檢查數組中的前兩個元素。

不要將數組的大小作為參數傳遞,這無論如何都沒有意義,因為您可以簡單地調用arr.length ,您應該傳遞起始索引並在每次遞歸調用時增加它,直到達到數組的長度。

private static boolean isSorted(int[] arr, int index) {
    if(arr.length == 0 || arr.length == 1 || index == arr.length - 1){
        return true;
    }
    if (arr[index] > arr[index + 1]) {
        return false;
    }
    return isSorted(arr, index + 1);
}

並以0作為起始索引從 main 調用

System.out.println(isSorted(unsortedArry,0));
System.out.println(isSorted(unsortedArry2,0));

如果從開始到最后一個元素的子數組已排序並且最后一個元素大於或等於最后一個元素之前的元素,則數組已排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM