JAVA空間換時間以及時間換空間的例子

算法的好壞有兩個指標:需要的內存空間(可以 理解爲運行代碼需要的內存空間),代碼運行的時間(可以簡單的理解爲代碼需要執行的步數)

程序的設計要不就是時間換空間,要不就是用空間去換時間。並且時間和空間是可以進行相互轉化的:對於執行的慢的程序,可以通過消耗內存(即構造新的數據結構)來進行優化。而消耗內存的程序,也可以多消耗時間來降低內存的消耗。 

下面舉個簡單的例子:比如要寫一個兩個值互換的算法

//時間換空間
int a = 5;
int b = 10;
a = a+b;//得到a值爲15
b = a-b;//得到b值爲5
a = a-b;//得到a值爲10

//空間換時間
int c = 5;
int d = 10;
int e = c;//得到e爲5
c= d;//得到c值爲10
d = e;//得到d值爲

結論:第一個a和b互換值的算法:總共進行了3次加減運算和三次賦值運算,能夠把a和b的值進行互換,沒有開闢多餘的內存空間。c和d互換的時候,多開闢了一個內存空間存儲e,但是這樣只需要進行三次賦值運算就可以把c和d的值進行互換。所以第一個算法空間效率高,時間效率低,第二個算法空間效率低,時間效率高,

我們在程序當中,請求分頁,請求分段,都屬於用時間去換空間。在項目當中使用各種緩存技術,都屬於利用空間去換時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章