1. 程式人生 > 實用技巧 >sql sever 新增行並獲取該行的Id

sql sever 新增行並獲取該行的Id

演算法的時間與空間複雜度

事後分析法

缺點:不同的資料規模,不同的機器下演算法執行的時間不同,無法做到計算執行時間

事前分析法

大O時間複雜度

漸進時間複雜度 隨著n的增長,程式執行時間跟隨n變化的趨勢

幾個原則

去掉常數項

2(n^2) =n^2

一段程式碼取時間複雜度最高的

test(n) {
  //時間複雜度n^3
 for(int i = 0; i < n ; i++){
   for(int i = 0; i < n ; i++){
     for(int i = 0; i < n ; i++){
            print(n);
     }
   }
 }
 //時間複雜度n^2
 for(int i = 0; i < n ; i++){
   for(int i = 0; i < n ; i++){
     print(n);
   }
 }
 //時間複雜度n
 for(int i = 0; i < n ; i++){
   print(n);
 }
}

這段程式碼的時間複雜度為n3+n2+n

當n足夠大時,n2和n與n3相比太小,可以忽略不計

常見覆雜度

o(1)

i = i + 1;

o(n)

test(n){
  for(int i = 0 ;i < n;i++){
    print(i);
  }
}

o(n^2)

test(n){
  for(int i = 0 ;i < n;i++){
    print(i);
    for(int j = 0 ;j < n;j++){
      print(i);
    }
  }
}

o(log2n)

PS:如果ax =N(a>0,且a≠1),那麼數x叫做以a為底N的對數,記作x=logaN,讀作以a為底N的,其中a叫做對數的底數,N叫做真數。

test(n) {
  int i = 1;
  while (i <= n) {
    i = 2 * i;
  }
}

隨著迴圈次數的增加,i的值變化如下

根據對數函式的公式 2的i次方等於n,i等於log2n

最好情況時間複雜度

資料比較有序的情況的時間複雜度

最壞情況時間複雜度

資料完全無序

空間複雜度

與n無關的程式碼空間複雜度可以忽略

空間複雜度O(n)

test(n) {
  //在記憶體中開闢了一個長度為n的陣列
  List array  =  List(n);
  print(array.length);
}

文章會首發在微信公眾號‘’傑克的程式人生‘’,歡迎關注。
掃描左側二維碼關注公眾號,掃描右側二維碼新增作者微信,加入Flutter技術交流群。