struktur data arraymoenawar.web.id/wp-content/uploads/2018/03/sd-03-array.pdf · 2018. 3. 19. ·...

33
Struktur Data Array Munawar, PhD

Upload: others

Post on 03-May-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Struktur Data

Array

Munawar, PhD

Page 2: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

JENIS-JENIS DATA

Tipe Data Sederhana

- Data Sederhana Tunggal :

integer, real, boolean, karakter

- Data Sederhana Majemuk : string

Tipe Data Berstruktur

- Struktur sederhana : array, record

- Struktur majemuk

- Linier : stack (tumpukan), queue (antrian), linear

linked list

- Non Linier : tree (pohon), graph

Page 3: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Definisi: Array (larik) adalah suatu himpunan

berhingga elemen, terindeks dan homogen.

Terindeks berarti elemen-elemennya dapat

diacu sebagai elemen ke-1, ke-2, …, ke-n.

elemen ke-2 = 15

elemen ke-5 = 3

Homogen berarti bahwa semua elemen

dalam suatu array bertipe sama.

12 15 32 66 3 20

12.3 “AB” -12 TRUE 288.3 3213

Page 4: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Subskrip atau indeks dari elemen array

menyatakan posisi elemen pada urutan

dalam array tersebut

Ada 3 hal yang harus dikemukakan dalam

mendeklarasikan suatu array, yaitu :

1. nama Array

2. Range dari subskrip

3. Tipe Data dari elemen array

Page 5: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Penulisan notasi array

Suatu array A berdimensi satu dengan tipe data T dan

subskrip bergerak dari L sampai dengan U, ditulis

sebagai A(L:U) = (A(i)), i=L, L+1, L+2,…, U dengan

setiap elemen A(i) bertipe data T.

L = lower bound (batas bawah)

U = upper bound (batas atas)

Batas bawah array (L) tidak harus satu, melainkan bisa

juga bilangan lain sesuai kebutuhan)

Rentang (range) adalah banyaknya elemen sebuah

array. Dihitung dengan cara Rentang = U – L + 1

Page 6: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Array SISWA(0:9) bertipe STRING

Batas bawah indeksnya = 0

Batas atas indeksnya = 9

Rentang array SISWA = 9 – 0 + 1 = 10

SISWA(0) = “Budi”

SISWA(1) = “Catur”

SISWA(2) = “Dewi”

SISWA(9) = “SEPTI”

Page 7: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Array Berdimensi Banyak (multi-

dimensional array) adalah array yang

elemennya berupa array juga.

A(L:U) bertipe T

dimana T adalah tipe array T(L2:U2)

Contoh kasus: Sebuah kelas terdiri atas

50 siswa. Nilai ujian tiap siswa terdiri atas

nilai Ujian ke-1, Ujian ke-2 dan Ujian ke-3

Bagaimana tipe data yang digunakan?

Page 8: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Penjabaran

NilaiSiswa(1) memiliki nilai ujian 75, 68, 79

NilaiSiswa(2) memiliki nilai ujian 10, 100, 50

NilaiSiswa(3) memiliki nilai ujian 90, 80, 85

NilaiSiswa(4) memiliki nilai 85, 85, 80

NilaiSiswa(5) memiliki nilai 100, 100, 100

NilaiSiswa(50) memiliki nilai 65, 75, 95

Page 9: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Nilai untuk tiap siswa dibuatkan tipe array

Ujian(1:3) bertipe Integer

Sedangkan, tipe untuk NilaiSiswa adalah

NilaiSiswa(1:50) bertipe Ujian(1:3)

1

2

3

50

75 68 79

10 100 50

90 80 85

65 75 95

75 68 79

10 100 50

90 80 85

… … …

65 75 95

Page 10: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Notasi array dimensi 2

A(L1:U1,L2:U2) = (A(I,J)), I = L1, L1+1,L1+2,…, U1

J = L2, L2+1, L2+2, …,U2

Contoh : B(1:3,1:10)

NilaiSiswa(1:50,1:3)

Banyaknya elemen array merupakan ukuran array atau order array. Order suatu array dimensi 2 diperoleh dengan cara

Order array A = (U1 - L1 + 1) * (U2 - L2 + 1)

Order array B = (3-1+1) * (10-1+1) = 3 * 10 = 30

Order array NilaiSiswa = (50-1+1) * (3-1+1) = 150

Page 11: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Secara umum, notasi array berdimensi

banyak ditulis sbb:

A(L1:U1, L2:U2, L3:U3, …, Ln:Un) tipe T

Order array A =

(U1-L1+1) * (U2-L2+1) * … * (Un-Ln+1)

Page 12: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Contoh kasus:

Suatu kelas terdiri atas 50 orang siswa SD

kelas 6. Dari kelas 1 s.d. kelas 6 ujian

selalu dilaksanakan 3 kali, yaitu uji-1, uji-2,

dan uji-3 untuk mata pelajaran

Matematika.

Buatlah struktur data array untuk

menyimpan nilai Matematika siswa dalam

kelas tersebut.

Page 13: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe Array

Jawaban I :

NilaiMat(1:50, 1:6, 1:3) bertipe integer

S K U

S = Jumlah siswa (1 s.d. 50)

K = Jumlah kelas (1 s.d. 6)

U = Ujian ke … (1 s.d. 3)

Jawaban II :

NilaiMat(1:6, 1:50, 1:3) bertipe integer

Page 14: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY

Cara mengacu ke elemen array

Pada soal di atas untuk Jawaban I, untuk

mengacu Nilai siswa ke-45, pada kelas 3,

ujian ke-2 ditulis: NilaiMat(45,3,2)

Untuk jawaban ke-2 ditulis:

NilaiMat(3,45,2)

Page 15: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Tipe ARRAY Pemetaan Array ke Memori

Ada beberapa cara untuk menyajikan tipe

data array di dalam memori. Skema

penyajian dapat dievaluasi berdasarkan 4

karakteristik, yaitu:

1. Kesederhanaan dari akses elemen

2. Mudah untuk ditelusuri

3. Efisiensi dari utilisasi storage

4. Mudah dikembangkan

Page 16: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Array ke Memori

Cara termudah adalah memetakan array

sedemikian sehingga urutan fisik elemen

sama dengan urutan logik elemen.

Ada 2 hal yang mutlak diperlukan, yaitu:

1. Address awal ruang storage yg

dialokasikan bagi array tersebut

2. Ukuran elemen array

Page 17: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Array ke Memori

Array Memori/Storage

Address awal dari elemen ke-i adalah: B + (i-1) * S

B = Address awal; S = ukuran memori

A

Y

R

T

N

A

Y

R

T

N

Address

Awal

Page 18: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Array ke Memori

Secara umum, address awal untuk elemen ke-i dari suatu array A(L,U) adalah

= B + (i-L) * S

Contoh: Carilah address awal elemen ke-6 dari array A(3:10) bertipe WORD (2 byte). Array dialokasikan di memori mulai alamat 20010.

Addr. elemen ke-4 = 20010 + (6-3) * 2 = 20016

Page 19: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan ke Memori untuk Array Multi Dimensi

Alamat address awal elemen (i,j) =

B + (i-L1) * (U2-L2+1) * S + (j-L2) * S

Page 20: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

TRIANGULAR ARRAY (Array Segitiga)

Ada 2 jenis triangular array, yaitu upper

triangular array dan lower triangular array.

Upper triangular array adalah array yang

seluruh elemennya di bawah diagonal

utama bernilai 0.

Lower triangular array adalah array yang

seluruh elemennya di atas diagonal utama

bernilai 0.

Page 21: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

1 2 5 3 0

0 4 6 7 3

0 0 5 0 4

0 0 0 8 9

0 0 0 0 3

1 0 0 0 0

2 4 0 0 0

5 6 3 0 0

3 7 2 7 0

0 8 1 7 9

Upper Triangular Array

Lower Triangular Array

Page 22: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

1 2 5 3 0

0 4 6 7 3

0 0 5 0 4

0 0 0 8 9

0 0 0 0 3

1 0 0 0 0

2 4 0 0 0

5 6 3 0 0

3 7 2 7 0

0 8 1 7 9

Upper Triangular Array

Lower Triangular Array

Jumlah elemen berarti =

N (N + 1) /2

N = jumlah baris/kolom

Page 23: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

Jumlah memori yang diperlukan = N (N+1)

/2,

bukan (N x N)

Caranya: trianguler array disimpan ke

dalam array dimensi 1 berkapasitas

N(N+1)/2

Page 24: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

A B C D E

F G H I

J K L

M N

O

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

T(1,1) S(1) T(2,1) S(N+1)

T(1,2) S(2) T(2,2) S(N+1)

T(1,3) S(3) T(2,3) S(N+2)

… …

T(1,N) S(N) T(2,N) S(2N) T(i,j) S((i-1)*N+j-i*(i-1)/2-1)

Page 25: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

A

B C

D E F

G H I J

K L M N O

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

T(1,1) S(1)

T(2,1) S(2)

T(2,2) S(3)

T(5,2) S(12)

T(i,j) S(i*(i-1)/2+j-1)

Page 26: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

Dua buah trianguler array beroder N dapat

disimpan ke dalam sebuah array dimensi

2 beroder N (N+1)

Page 27: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

Misalkan A dan B adalah trianguler array berorder 5 x 5. Kedua array tersebut dapat disimpan ke dalam array C beroder 5 x 6.

Terlebih dulu, salah satu traianguler array di-transpose ke bentuk lower trianguler array.

Jika A adalah upper trianguler array dan B adalah lower trianguler array, maka array C diisi dengan elemen array A dan B dengan cara berikut :

C(i,j+1) = A(i,j) untuk i ≤ j

C(i,j) = B(i,j) untuk i ≥ j

Page 28: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

Array A

Array B

A B C D E

F G H I

J K L

M N

O

P Q R S T

U V W X

Y Z 1

2 3

4

P

Q U

R V Y

S W Z 2

T X 1 3 4

Transpose

Page 29: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Trianguler Array

Array A

Array B

A B C D E

F G H I

J K L

M N

O

P

Q U

R V Y

S W Z 2

T X 1 3 4

P A B C D E

Q U F G H I

R V Y J K L

S W Z 2 M N

T X 1 3 4 O

Page 30: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

SPARSE ARRAY (Array Jarang)

0 0 0 0 1 0 0 2 0 0

0 3 0 0 0 0 0 0 0 0

4 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 9 0 0 0

0 0 0 5 0 0 0 0 0 0

0 0 0 0 9 0 0 6 0 0

0 0 0 0 0 0 0 0 0 0

7 8 0 0 0 0 0 0 0 0

Page 31: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Sparse Array dengan Vektor

Baris kolom nilai

V(1) 1 5 1

V(2) 1 8 2

V(3) 2 2 3

V(4) 3 1 4

V(5) 4 7 9

V(6) 5 4 5

V(7) 6 5 9

V(8) 6 8 6

V(9) 8 1 7

V(10) 8 2 8

Page 32: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Pemetaan Sparse Array dengan Vektor

Kekurangan pemetaan sparse array dengan vektor adalah tidak mudah melakukan updating nilai terhadap array.

Misalkan elemen ke-(4,6) di-update sehingga bernilai 7, maka vektor V(5) hingga V(8) berubah menjadi V(6) hingga V(9), sedangkan V(5) diisi dengan tripel (4,6,7)

Penyajian lain sparse array dengan menggunakan linked list (daftar berkait).

Page 33: Struktur Data Arraymoenawar.web.id/wp-content/uploads/2018/03/SD-03-Array.pdf · 2018. 3. 19. · Contoh kasus: Suatu kelas terdiri atas 50 orang siswa SD kelas 6. Dari kelas 1 s.d

Munawar, PhD