1.時間複雜度(流程決定)
2.額外空間複雜度(流程決定)
3.常數項時間(實現細節決定)
如果乙個操作的執行時間不以具體樣本量為轉移,每次執行時間都是固定時間,這樣的操作就是常數時間的操作。
例如:①在進行加法運算時,加法所用的時間與相加的兩個數字的大小是沒有關係的
②取出陣列中第一千位置和一千億位置的數字,二者所需的時間是相同的,陣列內部是根據計算偏移量進行定址的,不是遍歷。
常見的算數運算(+、-、*、/、%等)
常見的位運算(>>、>>>、<<、|、&、^等)
賦值、比較、自增、自減操作等
陣列定址操作
此處提及一下》與》的區別:
>>為帶符號右移,在你右移的過程中符號位是0最高位就補0,符號位是1最高位就補1
>>>為不帶符號右移,在你右移的過程中,最高位全部用0進行補充
總之,執行時間固定的操作都是常數時間的操作
假定有乙個陣列,陣列中有n個元素
1.遍歷陣列中0~n-1元素,找到最小值的位置,把最小值與0位置上的數做交換
2.遍歷陣列中1~n-1元素,找到最小值的位置,把最小值與1位置上的數做交換
遍歷陣列中n~n-1元素,找到最小值的位置,把最小值與n位置上的數做交換
那麼:選擇排序一共執行了多少次常數級別的操作呢?
上面步驟1:n個數進行了比較後交換
上面步驟2:n-1個數進行了比較後交換
交換的次數每次都是1,最終有n次交換,n為常數可以忽略
總的比較次數實際上是乙個等差數列(n+(n-1)+。。。)==>最終可以簡化的寫成乙個二次函式n的平方
結論:選擇排序的時間複雜度就是o(n平方)
假定有乙個陣列,陣列中有n個元素
第一輪:下標為0的數字與下標為1的數字作比較,大的數字放在後面。重複操作,直到下標為n-1的數字與下標為n的數字做完交換
第二輪:也是從下標為0的數字與下標為1的數字作比較。。。直到下標為n-1的數字與下標為n-2的數字作比較並做完交換
時間複雜度:第一輪有n-1對數字要進行比較並交換,第二輪有n-2對數字要進行比較並交換。。。。
同樣為乙個等差數列(n-1)+(n-2)+(n-3)+。。。。。
所以氣泡排序的時間複雜度為o(n平方)
假定有乙個陣列,陣列中有n個元素
1.保證陣列下標0~0之間有序,這個是肯定保證的
2.保證陣列下標0~1之間有序,假設下標為1的數小於下標為0的數,那麼這兩個數字就作交換
3.保證陣列下標0~2之間有序,0~1之間已經有序,2位置的數與1位置的數作比較,若2大,就和1作交換,若還大再和0作交換
4.保證陣列下標0~n之間有序,0~n-1之間已經有序,n位置的數向前逐個比較,若小就交換,若大就停止交換
時間複雜度(有兩種極端情況):
①陣列按照下標順序為1,2,3,4,5,6。這種情況下時間複雜度為o(n)
②陣列按照下標順序為6,5,4,3,2,1。這種情況下需要交換次數為:1+2+3+4+5為等差數列,時間複雜度為o(n平方)
注意:此時的時間複雜度要按照最壞情況進行估計,所以插入排序的時間複雜度為o(n平方)
當完成了表示式的建立,只要把最高端項留下即可。低階項都去掉,高階項的係數也去掉。
記為:o(忽略掉係數的高階項)
意義:當你的樣本量大到一定程度,你會發現低階項和高階項的係數都變得不再重要了。
時間複雜度它是衡量演算法流程的一種指標
1.若你在程式中不需要開闢新的空間,只是申請了有限個變數,這時我們就稱額外空間複雜度為o(1)
2.若你的程式中開闢了乙個額外陣列,那麼我們就稱你的額外空間複雜度為o(n)
3.若使用者想實現的功能就是拷貝出和它傳過來的引數一樣的新陣列進行返回,那麼我們申請的陣列的額外空間複雜度為o(1)
定義:額外空間複雜度與功能無關,只是為了支援這個需求你必須開闢的額外空間
若實現的邏輯的時間複雜度相同,此時我們就應該把常數項時間考慮進去
這時如果我們繼續對兩個演算法進行拆分涉及到的東西就會很多,最簡單的方法就是構造兩個大樣本,拿到程式中跑,比較時間
在時間複雜度的指標上,一定要盡可能的低,先滿足了時間複雜度最低這個指標後,使用最少的空間的演算法流程
評估演算法核心指標理解
1.時間複雜度 這個是由流程決定的,那什麼叫做流程決定?就是看你是怎麼設計這套流程演算法的。舉例 如果你是直接根據下標索引直接找到資料,那麼你的時間複雜度就為o 1 而如果是迴圈遍歷比對找到資料,那麼你的時間複雜度就位o n 2.額外空間複雜度 這個也是由流程決定的。首先什麼叫做額外空間複雜度,就是...
評估演算法的效能
我們要想去度量乙個演算法的效能,有多種方法,比如度量演算法的執行時間,統計指令,度量演算法所使用的記憶體等方法,下面我們乙個乙個的來解讀一下 度量演算法的執行時間的一種方法是,利用計算機自帶的乙個計時器,來獲取乙個迴圈所執行的執行時間,我們通過連續幾個迴圈的執行時間從而找出每乙個迴圈之間數字和時間的...
分類演算法評估指標
2 準確率 accuracy 準確率是常用的乙個評價指標,但是不適合樣本不均衡的情況。ac cura cy t p tn tp t n fp fn accuracy tp tn tp tn fp fnac cura cy t p tn tp t n fp fn 3 精確率 precision 又稱查...