算法的好壞有兩個指標:需要的內存空間(可以 理解爲運行代碼需要的內存空間),代碼運行的時間(可以簡單的理解爲代碼需要執行的步數)
程序的設計要不就是時間換空間,要不就是用空間去換時間。並且時間和空間是可以進行相互轉化的:對於執行的慢的程序,可以通過消耗內存(即構造新的數據結構)來進行優化。而消耗內存的程序,也可以多消耗時間來降低內存的消耗。
下面舉個簡單的例子:比如要寫一個兩個值互換的算法
//時間換空間
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的值進行互換。所以第一個算法空間效率高,時間效率低,第二個算法空間效率低,時間效率高,
我們在程序當中,請求分頁,請求分段,都屬於用時間去換空間。在項目當中使用各種緩存技術,都屬於利用空間去換時間。