时间复杂度(算法的渐进时间复杂度)
生活随笔
收集整理的這篇文章主要介紹了
时间复杂度(算法的渐进时间复杂度)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.時間復雜度:算法執行的次數(或者程序運行所需要的時間)
1.時間=執行次數
2.定義:程序T(n)隨著問題規模n的增加,確定f(n)的數量級,記做 T(n)=O(f(n)),增長率(看程序潛在能力)
3.時間復雜度一般是由嵌套最深層語句的頻度(次數)決定
4.大O推導:
- 常數1取代運行時間中的所有加法常數
- 修改后的運行次數函數中,只保留最高項
- 如果最高項存在且不是1,則去除與這個項相乘的常數
第二種方法: - 找出語句頻度最大(執行時間最長)的那一條作為基本語句
- 計算基本語句的頻度得到問題規模n的某個函數f(n)
- 修改后的運行次數函數中,只保留最高項
- 取其數量級O表示
栗子
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
總結
以上是生活随笔為你收集整理的时间复杂度(算法的渐进时间复杂度)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java服务写在哪里_【Java学习笔记
- 下一篇: 四级网络工程师试题一