算法入門基礎


排序分類:

  • 內部排序:把數據加載到內存中進行排序,適用於數據量小的情況。

  • 外部排序:借助外部的文件等,數據量大,無法加載到內存。

  • 常見分類如圖:

算法復雜度

算法復雜度分為時間復雜度和空間復雜度。其作用: 時間復雜度時間復雜度是指執行算法所需要的計算工作量;而空間復雜度是指執行這個算法所需要的內存空間。算法的復雜性體運行該算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間,即寄存器資源,因此復雜度分為時間和空間復雜度。

空間復雜度:

描述一個算法所需要的空間大小,即占用的內部內存,或者外部的內存大小,目前的設備性能各方面發展較快,空間復雜度已經不是影響程序性能的主要因素。

時間復雜度:

  • 概述:

    時間復雜度是一個函數,它定性描述該算法的運行時間。這是一個代表算法輸入值的字符串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。

  • 時間頻度

    一個語句執行次數稱為語句頻度或時間頻度,記為T(n)。算法花費的時間與算法中語句的執行次數成正比例,哪個算法中語句執行次數多,它花費時間就多。

  • 時間復雜度:

    一般情況下,算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近於無窮大時,T(n)/f (n)的極限值為不等於零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度

    舉個栗子:

    int sum = 0;
    int b = 100;
    for(int i = 0; i<= b;i++){
        sum += i;
    }
    //  T(n) = n+1 = 100+1 
    
    sum = (1+b)*b/2 //同樣也可以計算出結果,但是T(n) = 1
    

    簡而言之,在T(n)=O(f(n))中,當n趨近無窮大時,有 T(n)/f(n) = c ,極限值c是一個不為0 的常數,就叫 f(n) 是T(n)的同量級函數,若求得 f(n) = n ,則O(f(n)) =O(n) .

  • 各時間復雜度增長曲線:

  • 各算法時間復雜度:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM