通過圖我們可以比較不同的大o值,o(1)是優秀,o(logn)是良好,o(n)是還可以,o(n^2)則很差了,比如氣泡排序。
下面我們通過例子來看一下二分查詢法。就是我們玩過的遊戲猜數字,設定乙個陣列大小,乙個人心裡想乙個數,讓另外乙個人來猜。每次告訴他猜大了還是小了,直到猜中為止。看花了多少步。
/**
* 二分查詢法
* @param search 要查詢的數
* @param total 陣列長度
*/public void compute(int search,int total)
//花了多少次找到
int sum = 0;
//最小值
int min = 0 ;
//最大值
int max = total;
//當前猜的值
int current;
while (true)elseelse}}
}else
}
呼叫方法:
compute(3,100)
執行結果:
5025126
3找到了,花了5次
演算法表示法之大O表示法
我們在描述演算法複雜度時,常用o 1 o n o logn o n logn 等表示對應演算法的時間複雜度,是演算法的時空複雜度的表示。不僅僅用於表示時間複雜度,也用於表示空間複雜度。這種表示法稱之為大o表示法 大o表示法是演算法的一種特殊的表示法,指出了演算法的速度有多快,它指出了演算法執行時間的...
複雜度分析之大O表示法。
1 概要。好的程式設計表現出程式執行速度快,占用記憶體空間小的優點,分別對應時間複雜度和空間複雜度。2 複雜度分類兩種。演算法的時間複雜度是指演算法需要消耗的時間資源。演算法執行時間的增長率與f n 的增長率正相關,稱作漸近時間複雜度 asymptotic time complexity 簡稱時間複...
資料結構 最小表示法
1282 時鐘 有n個時鐘,每個時鐘有m個指標,p個刻度。時鐘是圓形的,p個刻度均分整個圓。每個時鐘每個指標指向整數刻度,並且每個時鐘自身指標指向的數字都不同。你可以任意旋轉時鐘的表盤,但是你不能轉指標。問最後有多少對時鐘可以變成相同的狀態。例如 n 5,m 2,p 4,5個時鐘的資料如下 經過旋轉...