演算法與演算法設計的幾大準則

2021-08-10 07:20:11 字數 492 閱讀 7615

我們設計的演算法肯定是想需要計算機的記憶體或者磁碟空間越少越好,執行這個演算法的指令序列需要的時間越少越好。

因此引入2個針對演算法設計提出2個概念就是時間複雜度和空間複雜度:

時間複雜度是當前設計的演算法執行完這個指令序列需要的時間。但是不同演算法執行需要的時間我們根據輸入的資料規模會需要不同的時間,比如常量級就是說隨著你輸入資料的規模我們的需要時間並不會增長。比如我們求1 + … + 100;如果我用 (1 + 100)/2*50,這個公式去求和,那麼即使是求1+ … + 1000,也是執行乙個指令序列。因此這個演算法需要的時間為0(1),也有線性關係隨便n的增加,執行的指令序列需要的時間按照這個線性關係變化等。

下面我給時間複雜度下個公式: t(n) = 0(f(n)) 其中t(n) 就是演算法的時間複雜度,n表示是輸入到演算法的資料模組比如求和中n = 100, 50,都不同 而f(n)就是根據n不同得到的指令執行的次數的乙個函式。

三種常用時間複雜度:0(1)常量級 0(n)線性級 0(n^2)平方級

演算法設計 幾大演算法簡介

1.貪心演算法 貪心演算法分為幾個階段,在每乙個階段,可以認為所做的決定是最好的,而不考慮將來的後果。一般來說,這意味著是某個區域性最優,這種 眼下能夠拿到的就拿 的策略就是這類演算法名稱的 當演算法終止時,我們希望區域性最優就是全域性最優,如果真是這樣的話,那麼演算法就是正確的了 否則,演算法得到...

幾大常用的排序演算法一

1.桶排序 桶排序很簡單,假如現在有10個數,需要對它們進行排序,首先我們就建立乙個大小為10的陣列來代表10個桶,然後將這10個數遍歷一遍,這個數是幾就放入第幾個桶中,最後將所有桶遍歷一遍,將桶中的數輸出即可 下面來乙個例項,第一行輸入要排序的數的個數,第二行輸入具體的數值,最後輸出排序過後的數 ...

演算法分析與設計 檢索演算法

在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.樸素演算法 遍歷陣列t中的每乙個元素,當查詢到x時,停止查詢,輸出下標。二分查詢 因為當前的陣列t是排好序的,所以直接可以進行二分查詢,設定兩個變數,l,r l t 1 r t n 每次取mid l...