學習了那麼久,一直沒有好好寫寫演算法。下面我簡單描述一下演算法方面知識。
在已證明演算法正確性的前提下,評價演算法的好壞主要是關注演算法在時間和
空間上效能的優劣。
演算法時間效能
的分析是通過計算
演算法時間複雜度
實現的,其關鍵就是計算演算法的執行時間。乙個演算法的執行時間,就是演算法中每條語句的執行時間的總和。但是在演算法實際執行過程中,每次執行所耗費的時間會受到諸如問題規模、輸入特性和具體硬體環境等各種外界因素的影響,想得到乙個絕對準確的執行時間是幾乎不可能的。為此,在進行演算法執行時間的計算時一般都忽略硬體及環境因素,並且假設每次執行時硬體條件和環境條件都是完全一致的,每條語句執行一次所需的時間均是單位時間。
演算法中一條語句的執行時間取決於該語句的執行次數和執行一次所需的時間。語句執行次數被稱為語句頻度,執行一次的時間被假設為單位時間,因此演算法的執行時間就可以看作是該演算法中所有語句的語句頻度之和。
我們舉個具體的例子:
有三條語句:
temp=i;
i=j;
j=temp;
以上三條單個語句的執行次數均為
1,也就是說單個語句的頻度均為1
演算法的執行時間
=1+1+1
此時,我們關心的是演算法時間複雜度到底是怎麼回事。請看
演算法基礎(二)——演算法時間複雜度和漸進時間複雜度
演算法基礎 一
一些有用的演算法 數值演算法,比如隨機化 分解因式 處理質數 數值積分 熟練操作常見的資料結構的方法,比如堆 樹 平衡樹 b數 排序和搜尋 網路演算法,比如最短路徑 生成樹 拓撲排列和流計算 一些常規的問題解決技巧 暴力或者窮舉搜尋 分治法回溯法 遞迴分支界限 貪心演算法和爬山法 最小花費演算法 縮...
演算法基礎(一)
博主這幾天面試總會被問到演算法相關知識,關鍵博主面試的是西安測試崗位,現在測試門檻都這麼高了嗎。各種手撕演算法 那就先從最基本開始看吧 一 時間複雜度計算 時間複雜度 定性描述該演算法的執行時間 這種只執行一次的,時間複雜度為o 1 這種執行n次的,時間複雜度為o n 當然如果前面是執行一次的,後面...
基礎演算法(一)
口訣 選泡插,堆歸快希桶計基,恩方恩老恩恩一三,對恩加k恩乘k,不穩穩穩不穩穩,不穩不穩穩穩穩。最簡單但是最沒用的排序演算法,也有優化空間。先區域性後整體 先粗糙後精細 public class selectionsort selectionsort arr 選擇排序 selectionsortwi...