Java算法的時間和空間復雜度是評估算法效率的兩個關鍵指標。時間復雜度是指算法執行時間隨輸入規模的增長而改變的程度,可以告訴我們程序運行速度的快慢。空間復雜度則是指算法在執行過程中需要占用的額外內存空間,可以告訴我們算法使用的內存大小。
public int sum(int n) { int result = 0; for (int i = 0; i<= n; i++) { result += i; } return result; }
以這段簡單的Java代碼為例,其時間復雜度為O(n),空間復雜度為O(1)。因為程序中只有一個for循環,循環次數隨輸入n的增大而增大,因此時間復雜度也隨n的增大而線性增長。而且程序中只需要使用一個int類型變量來存儲累加過程中的中間結果,因此空間復雜度也是常量級別的。
public boolean binarySearch(int[] nums, int target) { int left = 0, right = nums.length - 1; while (left<= right) { int mid = left + (right - left) / 2; if (nums[mid] == target) { return true; } else if (nums[mid]< target) { left = mid + 1; } else { right = mid - 1; } } return false; }
再以Java實現二分查找算法為例,其時間復雜度為O(logn),空間復雜度為O(1)。因為二分查找是將數組不斷對半分割,每次剩下的一半繼續執行查找操作,因此時間復雜度是對數級別的。而且程序中只需要使用幾個int類型變量來存儲查找過程中的中間結果和邊界值,因此空間復雜度也是常量級別的。
上一篇php gpc全稱
下一篇php json對比