日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间复杂度(算法的渐进时间复杂度)

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间复杂度(算法的渐进时间复杂度) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.時間復雜度:算法執行的次數(或者程序運行所需要的時間)
1.時間=執行次數
2.定義:程序T(n)隨著問題規模n的增加,確定f(n)的數量級,記做 T(n)=O(f(n)),增長率(看程序潛在能力)
3.時間復雜度一般是由嵌套最深層語句的頻度(次數)決定
4.大O推導:

  • 常數1取代運行時間中的所有加法常數
  • 修改后的運行次數函數中,只保留最高項
  • 如果最高項存在且不是1,則去除與這個項相乘的常數
    第二種方法:
  • 找出語句頻度最大(執行時間最長)的那一條作為基本語句
  • 計算基本語句的頻度得到問題規模n的某個函數f(n)
  • 修改后的運行次數函數中,只保留最高項
  • 取其數量級O表示
    栗子
x=0,y=0; 1 for(int k=0;k<n;k++) n+1x++; n for(int i=0;i<n;i++) n+1for(int j=0;j<n;j++){ n*(n+1)y++;} n*nf(n)=n(n+1)推論出T(n)=O(n^2) void exam(float x[][],int m,int n){ 代碼執行次數 float sum[]; 1 for(int i=0;i<m;i++){ m+1sum[i]=0.0; m for(int j=0;j<n;j++) m*(n+1)sum[i]+=x[i][j]; m*n } for(i=0;i<m;i++) m+1 cout<<i<<":"<<sum[i]<<endl; m }f(n)=m*(n+1)推導T(n)=O(m*n)

5.時間復雜度最壞,平均,最好三中情況:都是指程序運行時間
一般總是考慮在最壞情況下的時間復雜度,以保證算法的運行時間不會比它更長
6.常數階 :O(1)
線性階O(n):一般含有非嵌套循環,隨著問題n的擴大,計算機呈直線增長
平方階O(n^2):多少個嵌套循壞,就是n的幾次方,隨著變量的遞增,控制循環的變量次數減少

對數階:O(logn)
立方階:O(n^3)
指數階:O(2^n )
nlogn階: O(nlogn)
7.常用時間復雜度所耗時間從小到大依次是:
O(1) 從小到大排序
O(logn)
O(n)
O(nlogn)
O(n^2)
O(n)
O(n^3)
O(2^n )
O(n!)
O(n^n)
8.對數函數中n都在上面,底數具體是多少,看n的取值,一般底數是2
log2 ^0=1

總結

以上是生活随笔為你收集整理的时间复杂度(算法的渐进时间复杂度)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。