在下面的代碼中,我試圖檢查陣列是否使用遞回按升序排序;但有一些疑問:
- 我不明白為什么我們使用 arr[0] 和 arr[1] 來代替使用 arr[i] 和 arr[i 1]。
- 我理解為什么我們會通過 arr 1,但為什么我們要使用 size-1 來減小陣列的大小?這不應該導致陣列的第 n 部分減少嗎?
bool isSorted(int *arr, int size){
if(size == 0 || size == 1){
return true;
}
//compare two adjacent elements and reduce the size
if(arr[0] > arr[1]){
return false;
}
bool ans = isSorted(arr 1, size-1);
return ans;
}
uj5u.com熱心網友回復:
在這種情況下int *arr,它不是陣列,它是指向陣列中某個元素的指標。Andarr[0]表示這個元素,arr[1]表示 之后的下一個元素*arr。arr[i] <=> *(arr i). 你可以很容易地做這樣的事情:
int *p = arr[5];現在 p[0] 和 arr[5] 是一樣的。所以在第一步中arr查看第一個元素并比較第一個和第二個。在下一步arr中,查看第二個元素并比較第二個和第三個等。你必須了解當前元素和陣列末尾之間的距離,這就是你減小大小的原因
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493580.html
上一篇:MYSQL遞回cte查詢性能緩慢
