Computer >> Máy Tính >  >> Lập trình >> Lập trình

Nhân đôi mảng trong cấu trúc dữ liệu


Đôi khi chúng ta tạo mảng bằng cách sử dụng cấp phát bộ nhớ động. Nếu mảng được cấp phát bằng kỹ thuật cấp phát bộ nhớ động, chúng ta có thể tăng gấp đôi kích thước của mảng bằng cách thực hiện một số thao tác.

Giả sử kích thước mảng ban đầu là 5.

Mảng

0
1
2
3
4
Phần tử 1
Phần tử 2
Phần tử 3
Phần tử 4
Phần tử 5

Sau khi nhân đôi mảng, kích thước là -

0
1
2
3
4
5
6
7
8
9
Phần tử 1
Phần tử 2
Phần tử 3
Phần tử 4
Phần tử 5
Phần tử 6
Phần tử 7
Phần tử 8
Phần tử 9
Phần tử 10

Để nhân đôi kích thước của mảng arr có kích thước n, arr [0… n-1]. Lúc đầu, chúng ta phải tạo một mảng mới có kích thước như m. Sau đó sao chép n phần tử từ arr sang mảng mới. Cuối cùng thay đổi giá trị của arr để trỏ đến mảng mới.

Để tạo một mảng có kích thước m, điều này sẽ mất θ (m) lượng thời gian. Điều này là do nó sẽ được khởi tạo với một số giá trị mặc định. Sau đó, nó sẽ cần thêm θ (n) thời gian để sao chép từ mảng cũ sang mảng mới. Vì vậy, hoạt động mất θ (m + n) lượng thời gian. Hoạt động này được thực hiện khi mảng đã đầy. Và thường giá trị m giống như 2n. Vậy độ phức tạp là θ (2n + n) =θ (3n) tương đương với θ (n). Nhưng hoạt động này được coi là tốn kém. Tuy nhiên, phép toán này được phân bổ qua n lần lặp con, sau đó nó chỉ cộng θ (1) lần cho mỗi lần lặp. Vì vậy, chúng ta có thể hiểu rằng việc tăng kích thước mảng trong hệ số không đổi không ảnh hưởng xấu đến độ phức tạp tiệm cận.