口訣:
選泡插,
堆歸快希桶計基,
恩方恩老恩恩一三,
對恩加k恩乘k,
不穩穩穩不穩穩,
不穩不穩穩穩穩。
最簡單但是最沒用的排序演算法,也有優化空間。
先區域性後整體
先粗糙後精細
public
class
selectionsort
;//selectionsort(arr);選擇排序
selectionsortwithoutnote
(arr);}
static
void
selectionsortwithoutnote
(int
arr)
//n-1)+n-2)+···+1=n*(n-1)/2=n^2/2-n/2-->o(n^2)
//忽略低次項忽略常數項}}
printarr
(arr);}
static
void
swapwithoutnote
(int
arr,
int i,
int j)
static
void
printarrwithoutnote
(int
arr)
}
肉眼觀察不足以證明演算法的正確性。可以使用對數器,產生足夠多的樣本,用確定正確的演算法計算樣本結果,來對比被驗證的演算法結果。 演算法基礎(一) 基礎
學習了那麼久,一直沒有好好寫寫演算法。下面我簡單描述一下演算法方面知識。在已證明演算法正確性的前提下,評價演算法的好壞主要是關注演算法在時間和 空間上效能的優劣。演算法時間效能 的分析是通過計算 演算法時間複雜度 實現的,其關鍵就是計算演算法的執行時間。乙個演算法的執行時間,就是演算法中每條語句的執...
演算法基礎 一
一些有用的演算法 數值演算法,比如隨機化 分解因式 處理質數 數值積分 熟練操作常見的資料結構的方法,比如堆 樹 平衡樹 b數 排序和搜尋 網路演算法,比如最短路徑 生成樹 拓撲排列和流計算 一些常規的問題解決技巧 暴力或者窮舉搜尋 分治法回溯法 遞迴分支界限 貪心演算法和爬山法 最小花費演算法 縮...
演算法基礎(一)
博主這幾天面試總會被問到演算法相關知識,關鍵博主面試的是西安測試崗位,現在測試門檻都這麼高了嗎。各種手撕演算法 那就先從最基本開始看吧 一 時間複雜度計算 時間複雜度 定性描述該演算法的執行時間 這種只執行一次的,時間複雜度為o 1 這種執行n次的,時間複雜度為o n 當然如果前面是執行一次的,後面...