我們瞭解了大O符號,但我也經常看到T(n)。例如,符號T(n)是什麼意思?
public static Comparable[] mergeSort(Comparable[] A, int low, int high) {
if (low < high) { //at least 2 elements? //cost = c
int mid = (low + high)/2; //cost = d
Comparable[] A1 = mergeSort(A, low, mid); //cost = T(n/2) + e
Comparable[] A2 = mergeSort(A, mid+1, high); //cost = T(n/2) + f
return merge(A1,A2); //cost = g n + h
}
.... //cost = i
我相信c,d,e ......意思是任意命名的常量。
T(n/2)是什麼意思? T表示與大O有關嗎?
來自維基百科關於O-notation的文章:「一個函數T(n),它將表示算法在輸入集中元素的數量方面運行多長時間(在某些任意時間測量中)。」 – James
'T(n)',表示計算大小爲'n'的數據所需的*確切*時間。計算遞歸函數所需的時間非常有用。 – xiaoyi