Đối với bài tập về nhà, tôi đã đưa ra 8 đoạn mã sau đây để phân tích và đưa ra một ký hiệu Big-Oh cho thời gian chạy. Ai có thể cho tôi biết nếu tôi đi đúng hướng không?Bài tập về nhà của chữ O Big - Phân tích thuật toán phân đoạn mã?
//Fragment 1
for(int i = 0; i < n; i++)
sum++;
Tôi đang nghĩ đến O (N) cho đoạn 1
//Fragment 2
for(int i = 0; i < n; i+=2)
sum++;
O (N) cho đoạn 2 cũng
//Fragment 3
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
sum++;
O (N^2) cho đoạn 3
//Fragment 4
for(int i = 0; i < n; i+=2)
sum++;
for(int j = 0; j < n; j++)
sum++;
O (N) cho đoạn 4
//Fragment 5
for(int i = 0; i < n; i++)
for(int j = 0; j < n * n; j++)
sum++;
O (N^2) cho đoạn 5 nhưng n * n được ném tôi ra một chút vì vậy tôi không hoàn toàn chắc chắn
//Fragment 6
for(int i = 0; i < n; i++)
for(int j = 0; j < i; j++)
sum++;
O (N^2) cho đoạn 6 như cũng
//Fragment 7
for(int i = 0; i < n; i++)
for(int j = 0; j < n * n; j++)
for(int k = 0; k < j; k++)
sum++;
O (N^3) cho đoạn 7 nhưng một lần nữa n * n được ném tôi ra khỏi
//Fragment 8
for(int i = 1; i < n; i = i * 2)
sum++;
O (N) cho đoạn 8
Tôi không đồng ý với nhận xét "đã được bản địa hóa". Tính toán Big-Oh là phần trung tâm của phân tích thuật toán. Ví dụ mã cụ thể với các ước tính của Big-Oh có thể cực kỳ có giá trị đối với những người đang cố gắng trở nên thành thạo trong lĩnh vực này. – JESii