M ảng có thể coi là cấu trúc dữ liệu cho phép truy c ập ng ẫu nhiên thông qua ch ỉ số của chúng.[r]
(1)Lecturer: PhD Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com
Cấu trúc liệu giải thuật
(2)Bài Mảng
Nội dung:
1. Khái niệm mảng.
2. Biểu diễn mảng chiều (1D).
3. Biểu diễn mảng chiều (2D).
4. Các phép toán mảng 1D.
5. Các phép toán mảng 2D. Tham khảo:
(3)2.1 Khái niệm mảng (1/2)
Mảng là cấu trúc liệu người dùng định nghĩa, có kích thước cố định và đồng nhất
Theo tính chất đồng nhất, thành phần có kiểu,
gọi element type hoặc base type.
Theo tính chất có kích thước cố định, ta không thể thay đổi
kích thước mảng sử dụng
(4)2.1 Khái niệm mảng (2/2)
Các thành phần mảng truy cập thông qua chỉ số, chỉ số số nguyên để vị trí thành phần
mảng.
Như vậy, mảng hình thành cặp (value, index);
(5)2.2 Biểu diễn mảng chiều (1D) (1/3)
• Mảng thể nhớ ánh xạ tuần tự.
• Đặc tính ánh xạ cho phần tử
mảng có “khoảng cách” cố định với phần tử đầu mảng.
(6)(7)2.2 Biểu diễn mảng chiều (1D) (3/3)
• Địa phần tử trong mảng gọi địa sở (base address - LB).
• Địa phần tử thứ i được xác định:
Base address + offset of the ith element from base address
trong đó, offset được tính:
Offset of the ith element = number of elements before the ith * size of each element.
• Nếu LB lower bound (cận dưới), offset
(8)2.3 Biểu diễn mảng chiều (2D) (1/5)
• Mảng chiều hiểu thơng qua mảng
1D, đó, phần tử mảng 1D –
Mảng Mảng.
• Mảng 2D xem cột hàng • Cách biểu diễn gọi row-major
(9)(10)2.3 Biểu diễn mảng chiều (2D) (3/5)
Địa phần tử hàng i, cột j được xác định:
addr(a[i, j]) = ( number of rows placed before ith row * size of a row) + (number of elements placed before the jth element in the ith row * size of element)
trong đó:
Number of rows placed before ith row = (i – LB1), với LB1 lower bound của chiều thứ nhất.
Size of a row = number of elements in a row * a size of element. Number of elements in a row = (UB2 – LB2+1), với UB2 LB2
cận cận chiều thứ 2.
Như vậy: