Phân tích thời gian thực hiện chương trình

Em sắp thi mà vẫn đang lơ mơ một số chỗ mong mọi người giúp em.
Bài làm của em sẽ có kiểu: Thời gian thực hiện câu lệnh (1) là O(1)…
Vậy cho em hỏi lệnh if-else tính là 1 hay 2 lệnh ạ.
Lệnh do-while tính là 1 hay 2 lệnh ạ, và nếu là 1 thì là lệnh do hay lệnh while ạ.
Và đoạn lệnh sau:

{
  for(i=0;i<n;i++)
         for(j=0;j<m;j++)
                a=i*j;
} 

Có thời gian thực hiện là O(m.n) đúng không ạ.
Mong mọi người sớm giúp em, em cảm ơn ạ.

1 Like

if else thì là thế này

if (condition) {
    // code 1
} else {
    // code 2
}

Độ phức tạp là O(condition + max(code1, code2)) (nếu condition = O(1) thì coi như bỏ qua).

Còn do-while

do {
    // code
} while (condition)

Độ phức tạp là O(số vòng * (condition + code)) vì phải check condition và thực thi code ít nhất 1 lần.

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?