1. 程式人生 > >資料結構 時間複雜度 空間複雜度 一看就懂版本

資料結構 時間複雜度 空間複雜度 一看就懂版本

時間複雜度

時間複雜度簡單的理解就是執行語句的條數。如果有迴圈和遞迴,則忽略簡單語句,直接算迴圈和遞迴的語句執行次數。

比如:

  1. int x = 1;//時間複雜度為O(1)
  2. for(int i=0; i<n; i++) {  
  3.     System.out.println(i);  
  4. }//時間複雜度為O(n)
具體例子:

1、O(1)

  1. int x = 1;  

2、O(n)
  1. for(int i=0; i<n; i++) {  
  2.     System.out.println(i);  
  3. }  

3、O()
  1. int n = 8count = 
    0;;  
  2. for(int i=1; i<=n; i *= 2) {  
  3.     count++;  
  4. }  

4、
  1. int n = 8count = 0;;  
  2. for(int i=1; i<=n; i++) {  
  3.     for(int j=1; j<=n; j++) {  
  4.         count++;  
  5.     }  
  6. }  

5、
  1. int n = 8, count = 0;;  
  2. for(int i=1; i<=n; i *= 2) {  
  3.     for(int j=1; j<=n; j++) {  
  4.         count++;  
  5.     }  
  6. }  

所舉例子都比較簡單。

空間複雜度

空間複雜度也很簡單的理解為臨時變數佔用的儲存空間。一個簡單例子:

  1. //交換兩個變數x和y
  2. int x=1, y=2;  
  3. int temp = x;  
  4. x = y;  
  5. y = temp;  
一個臨時變數temp,所以空間複雜度為O(1)。