chết nhọc với ô học viên này thôi, như ngái ngủ chỉ thấy thầy nhiệt tình quá, cảm ơn thầy, đi học thì mang ơn thầy thì cố tập trung với hồi đáp thầy nhiệt lên chút, lớn rồi mà vẫn tồ
Cái này là vì đoạn operation này có 3 phép toán, phép toán (sum + N + 1 - i), phép toán gán giá trị cho i và phép toán gán trị của sum + N +1 - i cho sum nhé
Theo mình thì vẫn đúng 2N, vì sao? lần 1: khởi tạo i =1 và so sánh i cái này là 2 phép tính lần 2 -> lần n: mỗi lần i++ và i mỗi lần ở đây vẫn là 2 phép tính nên tổng vẫn là 2N
Học đến bài mảng 2 chiều sẽ dùng vòng lập j này để giải quyết . Mà tùy theo bài toán mình có thể dùng bao nhiều vòng lập lồng nhau cũng được cũng được . for cha { for con { for cháu { for chắt { for chít } } } }
Theo tui hiểu, thì tuỳ nha ông, nhưng hầu hết trường hợp thì sẽ là vậy, cái time complexity này nó phụ thuộc vào input size và basic operation của ông. Trước tiên ông phải xác định 2 khái niệm đó đã. Vì trong ví dụ thuật toán 1, 2 cái vòng for nó chạy dựa input size n, tức là n ông tăng lên, 1000 hay 10000 hay 1tr, thì nó sẽ ảnh hưởng lên thời gian chạy của vòng lặp đó. Còn ví dụ for ông cho chạy tới 1 số cố định, ví dụ từ 1 tới 1000 đi, là cái input nó ko đổi, thì không phải là O(n^2) nhé.
hiểu đơn giản là bước 1 nó gán i = 1 rồi so sánh (không có phép i++), các bước sau là nó i++ rồi so sánh (không có phép gán i = 1) toàn bộ các bước chỉ có 2 phép tính toán nên là 2N
chết nhọc với ô học viên này thôi, như ngái ngủ chỉ thấy thầy nhiệt tình quá, cảm ơn thầy, đi học thì mang ơn thầy thì cố tập trung với hồi đáp thầy nhiệt lên chút, lớn rồi mà vẫn tồ
nó trả lời giốg bố đời quá
Cảm ơn anh ạ, bài giảng thực sự quá dễ hiểu, một người thầy có tâm. Chúc anh anh luôn thành công và hạnh phúc trong cuộc sống ạ.
quá dễ hiểu, một bài giảng bổ ích
nói đến vòng for có 2 phép so sánh với gán là hiểu ngay thank a
trời em coi clip tây clip tàu đủ cả chỉ vì cái big0, omg cảm ơn anh đã hiểu
cảm ơn bác, bài giảng rất dễ hiểu
Tks a
A giảng rất dễ hiểu ạ
Cái thằng học viên thầy dạy mà đầu óc nó buồn ngủ hay k tập trung vậy trời. Chúc anh(thầy) sức khoẻ.
anh chàng giảng bài dể thương quá :B
hay quá , em cảm ơn anh
bác này nói dễ hiểu ghê
cảm ơn anh video rất bổ x.
anh có thể cho em xin file này để tham khảo không anh ?
em cảm ơn thầy, 3 thằng em hiểu rồi
phép tính của bạn đang sai chỗ là 2 + 2n + 3*n mới đúng(sai: 2 + 2n * 3*n...)
rất dễ hiểu
trân trọng cảm ơn anh
tại sao thuật toán 2 ghi cái thời gian chạy là n(n+1)/2 , O(n^2) nhỉ trong khi tính ra là có 5N+2 tức là O(n) = n thôi mà
n(n+1) = n^2 +n đó b
Cảm ơn a
cảm ơn anh
khóa học này ok v
anh cho em hỏi tại sao dòng 5 ở thuật toán 2 lại thực hiện 3N lần mà không phải N lần ạ? em cảm ơn anh
Mình đang hiểu vì vế N + 1 - i thì tốn 2 phép toán, thêm phép gán cho sum nữa là 3 nên đoạn đó sẽ là 3N
theo mình thì vế phải có N và i, phép toán ở trong vòng lặp chạy n lần nên mỗi giá trị này phải gán nhiêu đó lần á
@@duahaugaming8715 vế phải là sum + N + 1 + i b ơi , mình mới học cũng chưa hiểu
Cái này là vì đoạn operation này có 3 phép toán, phép toán (sum + N + 1 - i), phép toán gán giá trị cho i và phép toán gán trị của sum + N +1 - i cho sum nhé
Ông hỏi này có phải tên Trường k a
trường utehy hả anh?
Cho em hỏi dòng 4 tại sao không phải (2N + 1) ạ. Vì i = 1 cũng là 1 lần thực hiện chứ ạ.
Vì nó không đáng kể nên không tính vô đó em
@ cảm ơn anh ạ
Theo mình thì vẫn đúng 2N, vì sao?
lần 1: khởi tạo i =1 và so sánh i cái này là 2 phép tính
lần 2 -> lần n: mỗi lần i++ và i mỗi lần ở đây vẫn là 2 phép tính
nên tổng vẫn là 2N
@@baonguyenvan7651 Cảm ơn bạn !
@@baonguyenvan7651 theo mình thì vẫn còn thiếu vì
lần n+1: thì i++ sau đó kiểm tra i
nếu vòng lặp for j =i thay đổi thành for j=1 thì độ phức tạp nó sẽ là 2N hay vẫn giữ nguyên như clip bác ơi
j = 1 thì nó là 2N
Anh có thể cho em xin file được kh ạ
cho ưm xin cái slide đi
Anh ơi cho em hỏi, tại sao có vòng lặp for con gắn biến j vậy, em mới học chưa hiểu lắm, anh giải thích giúp em, em cảm ơn
Học đến bài mảng 2 chiều sẽ dùng vòng lập j này để giải quyết . Mà tùy theo bài toán mình có thể dùng bao nhiều vòng lập lồng nhau cũng được cũng được . for cha { for con { for cháu { for chắt { for chít } } } }
@@minhtran-uv4nd thường người ta lồng 2 for thôi. chứ 3 - 4 for thì code chạy đến năm sau chưa xong
cho e hỏi là kiểu nếu đoạn code nào mà có 2 vòng lặp lồng nhau thì độ phức tạp của nó lúc nào cũng là 0(n^2) ạ. mong anh giải đáp giúp em sớm nhất ạ
Theo tui hiểu, thì tuỳ nha ông, nhưng hầu hết trường hợp thì sẽ là vậy, cái time complexity này nó phụ thuộc vào input size và basic operation của ông. Trước tiên ông phải xác định 2 khái niệm đó đã. Vì trong ví dụ thuật toán 1, 2 cái vòng for nó chạy dựa input size n, tức là n ông tăng lên, 1000 hay 10000 hay 1tr, thì nó sẽ ảnh hưởng lên thời gian chạy của vòng lặp đó. Còn ví dụ for ông cho chạy tới 1 số cố định, ví dụ từ 1 tới 1000 đi, là cái input nó ko đổi, thì không phải là O(n^2) nhé.
Ông có hứng thú thì ib, tui gửi slide tui học cho ông đọc, nó rõ ràng hơn cái slide bài giảng này.
@@hungtinvo264 cảm ơn ông nhé , tui đang ôn thi cấu trúc dữ liệu và giải thuật ý mà 😊
@@hungnguyen-rw3vu gì đâu ông :)) ông ôn ko, tui gửi tài liệu cho.
@@hungtinvo264t ké vớiii
Ví dụ vòng lặp for đâu tiên i =0 thì sao anh
thì số lần lặp là n+1 lần. Nhưng độ phức tạp của thuật toán cũng chỉ lấy giá trị cao nhất nên vẫn sẽ là O(N) với 1 vòng for, và O(N^2) với 2 vòng for.
thuật toán 3 tại sao sum = N(N+1)/2 lại bằng 4 vậy ạ
@@Yuki-vt OK thanks b!
tại sao chỉ tính là 2: một phép gán,một phép so sánh mà không phải là 3 ở cái chỗ i++ luôn nhỉ?
sao lại là 3. nhìn kỹ lại xem sau khi khởi tạo gán i = 1 xong nó có quay lại khởi tạo lần nào nữa không. có 1 cách khác là khai báo i bên ngoài, chỗ khởi tạo bỏ trống như sau: int i = 1; for( ; i
hiểu đơn giản là bước 1 nó gán i = 1 rồi so sánh (không có phép i++), các bước sau là nó i++ rồi so sánh (không có phép gán i = 1)
toàn bộ các bước chỉ có 2 phép tính toán nên là 2N
cái vòng lặp đầu là có assignment là 1 rồi kiểm tra i
minh cung nghi giong nhu ban vi phai chay toi n + 1 thi moi thoat vong lap dc chu
@@chillwithme145 i=0 thì mới chạy n+1 lần chứ nhỉ , trong vid i=1 thì vd n=3 nó chỉ 3 lần là i thoát rồi
@@daivshow4574 nó còn th n=3 để xem 3 có nhỏ hơn n k, vậy tổng có n+1 lần á
Thuận toán 1 ở vòng for i là 2*n(n+1)/2 mới ta, sao lại 2n nhỉ
2*n*(n+1)/2 đấy là của vòng j, chứ i thì 2n là đúng (2n do i 2n
thèn học viên trả lời sao bố láo vậy
cái thằng học viên bị j ấy nhỉ ổng hỏi liên tục mà ko trả lời
Bị lag mạng.