即使對于未排序的(isNonDescending)陣列,我也得到了正確的答案。錯誤在哪里?我只想從陣列的開頭將陣列分解成更小的問題。
//檢查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;
}
uj5u.com熱心網友回復:
您繼續檢查相同的 2 個元素,嘗試使用 size 變數作為陣列索引。例如,如果前 2 個元素已排序,你會得到正確的結果,那是因為你只檢查了陣列中的前兩個元素。
uj5u.com熱心網友回復:
如果從開始到最后一個元素的子陣列排序并且最后一個元素大于或等于最后一個元素之前的元素,則陣列排序。
uj5u.com熱心網友回復:
不要將陣列的大小作為引數傳遞,這無論如何都是沒有意義的,因為您可以簡單地呼叫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);
}
并從 main 呼叫0作為起始索引
System.out.println(isSorted(unsortedArry,0));
System.out.println(isSorted(unsortedArry2,0));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468397.html
上一篇:重置沙漏的正確錯誤處理
