ความซับซ้อนของเวลา สามารถกำหนดเป็นเวลาที่อัลกอริธึมเรียกใช้กรณีเฉลี่ยได้
มาดูและคำนวณความซับซ้อนของเวลาของฟังก์ชันพื้นฐานบางอย่างกัน
วิธีการ
void counter(int n){
for(int i = 0 ; i < n ; i++){
for(int j = 1 ; j<n ; j += i ){
cout<<i<<” ”<<j;
}
cout<<endl;
}
} วิธีการข้างต้นจะรัน n/I ครั้งสำหรับค่าทั้งหมดของ i เช่น n ครั้งสำหรับการทำซ้ำครั้งแรกและ 1 ครั้งสำหรับการทำซ้ำครั้งสุดท้าย
ตามนี้ ความซับซ้อนของเวลาทั้งหมดคือ
(n/1 + n/2 + n/3 + …. + n/n) = n (1/1 + ½ + ⅓ + …. 1/n)
ตอนนี้ค่าของ (1/1 + ½ + ⅓ + …. 1/n) เท่ากับ O(log n) .
ความซับซ้อนของเวลาของรหัสนี้คือ O(nlogn) .
วิธีการ
void counter(n){
int i , j ;
for(int i = 1 ; i <= n ; i++){
for(j = 1; j <= log(i) ; j++){
cout<<i<<” ”<<j;
}
}
} ความซับซ้อนทั้งหมดของฟังก์ชันคือ O(log 1) + O(log 2) + O(log 3) + …. + O(log n) ซึ่งก็คือ O(log n!).