實際測量執行時間隨資料規模的變化
演算法分析(找出最耗時的部分,分析其被執行了多少次)
倍率實驗
均攤分析
這裡重點說明倍率實驗和均攤分析:
倍率實驗
首先介紹幾個有關概念:
若t(n)~a*n^b*log(n),則t(2n)/t(n)~2^b;
這裡的g(n)~f(n)表示隨著n的增大g(n)/f(n)的結果趨近於1,稱f(n)為g(n)的增長數量級,比如氣泡排序的增長數量級為n^2.
方法還是用實際測時的方法,過程為:
均攤分析
思路為分析所有操作的總成本,除以操作總數;
比如:用乙個陣列實現stack,初始大小為n,進行push操作前需要先檢查當前stack中包含的資料數目,若小於n則可以直接push,複雜度為o(1),否則需要擴充陣列容量為原來的2倍,後將所有數複製到新陣列中,也即複雜度為o(n),但實際上每進行n個操作才會觸發一次擴充操作,因此均攤下來仍然認為複雜度為o(1)
演算法複雜度分析
分析非遞迴演算法效率的通用方案 1.決定用哪個 哪些 引數作為輸入規模的度量 2.找出演算法的基本操作 作為一規律,它總是位於演算法的最內層迴圈中 3.檢查基本操作的執行次數是否只依賴輸入規模。如果它還依賴一些其他的特性,則最差效率 平均效率以及最優效率 如果必要 需要分別研究。4.建立乙個演算法基...
演算法複雜度分析
演算法分析的四個漸進表示法 一般,o裡的,取最小的 一般,裡的,取最大的 一般分析時間複雜度,且常考慮最壞複雜度,常用o分析 三法則 法則一 如果t1 n o f n t2 n0 o g n t1 n t2 n max o f n o g n t1 n t2 n o f n o g n 法則二 如果...
演算法複雜度分析
類別name 名字交換類排序 quicksort 快速排序 交換類排序 bubble sort 氣泡排序 選擇類排序 selection sort 選擇排序 選擇類排序 heapsort 堆排序插入類排序 insertion sort 插入排序 插入類排序 shell sort 希爾排序 bucke...