Anh cho em hỏi khúc cuối với ạ, em có search thì khi dynamic array đã full và mình add thêm 1 phần tử vào thì kích thước array thông thường sẽ được x2 (do việc cấp phát và copy array khá tốn kém). Như ví dụ thì sau khi thêm phần tử, array sẽ có 11 phần tử và capacity = 20 đúng ko ạ.
dynamic array hình như là ứng dụng của linked List array phải k ạ?
4 года назад
Hình như bạn nhầm với Array List chứ mình thực sự chưa nghe về Linked list array. Dynamic array đơn giản nó cũng chỉ là một cái array, mà chúng ta xử lí để nó có thể tăng giảm số phần tử thôi.
Về bản chất arr[i] và *(arr + i) bên static array có giống nhau ko anh, nếu nó giống nhau thì con trỏ *(arr + i) nó được lưa trữ ở đâu vậy anh?
3 года назад
Nó giống nhau đó e, nhưng với điều kiện lưu 1 byte, nghĩa là mỗi element chỉ lấy 1 byte thôi, còn nếu em dùng kiểu dữ liệu như là short, thì mỗi elem nó lấy 2 byte -> phải *(arr + i*typesize) thì mới đc nha. Còn lưu trữ con trỏ thì nó bốc đại đâu đó để nó allocate rồi lưu thôi e
khúc cuối mình có xíu thắc mắc là nếu trong bộ nhớ của mình ko có nơi nào đáp ứng đủ bộ nhớ cho array thì điều ji sẽ xảy ra anh
4 года назад+1
nguyên tôn việt mỗi ứng dụng của bạn nó sẽ có 1 cái heap size, mà size đó sẽ được xác định bằng: ví dụ như java sẽ là jvm, js thì là node. Khi mà bạn tạo 1 arr, mà trong heap không còn chỗ để tạo, thì nó sẽ báo là Out of Heap memory. Bạn có thể thử tạo 1 cái arr tầm 1 tỷ element là bị ngay ấy mà :D
Ủng hộ anh mỗi video nè
Tks e nha :D Thử đăng giờ này xem có ai xem ko mà vào lẹ ghê :D
Đỉnh thật sự, chưa thấy bài giảng trên ytb nào mà chất lượng hơn mấy cái khóa tốn tiền.
Ông Dev là một cheatsheet môn DSA. Cảm ơn anh! Playlist tâm huyết
2h30 khuya nằm coi 1 lèo 4 tập Cấu trúc dữ liệu. Thiệt cuốn hơn cả Netflix 😂 Tks.
hon ca xem s**
đang tìm hiểu DS&A vớ đc cái video này cũng hữu ích phết mn ạ
Quá hay bạn ơi, dùng Array mãi rồi mà nay xem thấy hiểu ra bản chất vấn đề luôn
5 năm trước xem đc cái này chắc cũng đc cái này chắc em ẵm giải nhất tin học trẻ 🤣
quá hay.....như được khai sáng vậy
Hay lắm a! Mong anh làm full seri này!
ông dev nói tự nhiên dễ hiểu quá
hay quá
Hay quá anh.
hay quá ông dev owiiii ^^
Bác cho em hỏi xíu cái chỗ static array không thể delete. Em nhớ là vẫn có thể xóa đc mà nhỉ. Tức là mình dịch và ghi đè lên phần tử cần xóa
Đối với mình thì 1 static arr nó nên là static á :v chớ dịch tới dịch lui thì mình gói nó vào cái dynamic arr trớt :v
Hay!
Anh cho em hỏi khúc cuối với ạ, em có search thì khi dynamic array đã full và mình add thêm 1 phần tử vào thì kích thước array thông thường sẽ được x2 (do việc cấp phát và copy array khá tốn kém). Như ví dụ thì sau khi thêm phần tử, array sẽ có 11 phần tử và capacity = 20 đúng ko ạ.
Đúng r e
dạ cho em hỏi là tại sao cái chỗ insert nó lại là O(n) ấy ạ vs chỗ f(n) bằng n-1-i ấy em chưa hiểu rõ lắm
chạy từ index i tới n
nếu mà dynamic array nó đi tìm vùng nhớ mới phù hợp với số lượng array thì hàm append của dynamic array có độ phức tạp là O(n) à anh?
Hehe, cái việc mà nó cấp phát bộ nhớ cho arr mới thì là việc của OS e ạ, còn việc copy arr cũ sang arr mới thì là O(n)
@ dạ em hiểu rồi. Em cảm ơn a
dynamic array hình như là ứng dụng của linked List array phải k ạ?
Hình như bạn nhầm với Array List chứ mình thực sự chưa nghe về Linked list array. Dynamic array đơn giản nó cũng chỉ là một cái array, mà chúng ta xử lí để nó có thể tăng giảm số phần tử thôi.
@ à đúng r, e nhầm với cái danh sách liên kết @@, sr a, tay nhanh hơn não :((
Về bản chất arr[i] và *(arr + i) bên static array có giống nhau ko anh, nếu nó giống nhau thì con trỏ *(arr + i) nó được lưa trữ ở đâu vậy anh?
Nó giống nhau đó e, nhưng với điều kiện lưu 1 byte, nghĩa là mỗi element chỉ lấy 1 byte thôi, còn nếu em dùng kiểu dữ liệu như là short, thì mỗi elem nó lấy 2 byte -> phải *(arr + i*typesize) thì mới đc nha.
Còn lưu trữ con trỏ thì nó bốc đại đâu đó để nó allocate rồi lưu thôi e
@ Em cảm ơn anh.
Nhưng tronng c array có type int thì *( arr + 1 ) thì địa chỉ nó cộng 4 bytes đến địa chỉ element tỉếp theo luôn.
@@hha15623 Vầy chắc là nó tự handle rồi :D Anh thì ko nhớ code đoạn này cho lắm :D chỉ nhớ concept thôi haha tks e nha
ôi, cảm ơn anh
khúc cuối mình có xíu thắc mắc là nếu trong bộ nhớ của mình ko có nơi nào đáp ứng đủ bộ nhớ cho array thì điều ji sẽ xảy ra anh
nguyên tôn việt mỗi ứng dụng của bạn nó sẽ có 1 cái heap size, mà size đó sẽ được xác định bằng: ví dụ như java sẽ là jvm, js thì là node. Khi mà bạn tạo 1 arr, mà trong heap không còn chỗ để tạo, thì nó sẽ báo là Out of Heap memory. Bạn có thể thử tạo 1 cái arr tầm 1 tỷ element là bị ngay ấy mà :D
@ heap size mình có thể chỉnh đc đúng k ạ
nhờ a cứu cả học kì của e :)))
Cảm ơn anh, rất hay và dễ hiểu
giờ e mới biết là array có 2 loại. Từ trc đến h cứ nghĩ là chỉ có 1 loại cố định thôi.
Ừ thì bản chất array động nó cũng là array tĩnh mà, chẳng qua mình bọc nó lại để thêm tính năng thôi e
@ Nếu như e không nhầm thì array động chính là th arrayList đúng k ạ ?
Ừ :D Anh có ra phần 5 của series này, cách implement ArrayList đó e :D
Elemon và access là j vậy mn😅😅😅
Elememt (danh từ) nghĩa là phần tử nha bạn, còn access (động từ) nghĩa là truy cập