(JUAL[1990]) = 100 LOK (JUAL[1991]) = 104 LOK (JUAL[1992]) = 108 Berapa lokasi JUAL[2000] ? untuk mendapat lokasi tersebut LOK(LA[K]) = Awal(LA) + W(K - LB) = 100 + 4 * (2000 1990) = 140 PENGALAMATAN Array / Larik Lokasi Memori Array Awal - 100 Jual(1990) 104 Jual(1991) 108 Jual(1992) 112 Jual(1993) 116 Jual(1994) 112 Jual(1995) 124 Jual(1996) 128 Jual(1997) 132 Jual(1998) 136 Jual(1999) 140 Jual(2000)
Proses Matriks 1. Elemen Matriks diproses Baris demi Baris 2. Elemen Matriks diproses Baris demi Baris
PROSES MATRIKS :
INISIALISASI Matriks
18 03 69 24 08 70 1 Array B dua dimensi (matriks) : - jumlah baris 2, kolom 3 - data 18, 03, 69, 24, 08, 70. 2 123 For Baris = 1 to 2 do For Kolom = 1 to 3 do A(Baris, Kolom) = 0 Endfor Endfor
Isi dengan 1,2,3,4,5,6 Matriks 18 03 69 24 08 70 1 Array B dua dimensi (matriks) : - jumlah baris 2, kolom 3 - data 18, 03, 69, 24, 08, 70. 2
123 Indeks = 1 For Baris = 1 to 2 do For Kolom = 1 to 3 do A(Baris, Kolom) = Indeks Indeks = Indeks + 1 Endfor Endfor 123 456 Menjumlahkan setiap baris For Baris = 1 to 2 do Matriks TotalBaris = 0 For Kolom = 1 to 3 do TotalBaris = TotalBaris + A[Baris,Kolom] Endfor Print Total Baris Endfor
Menjumlahkan C = A + B Dua buah Matriks For Baris = 1 to 2 do For Kolom = 1 to 3 do C[Baris,Kolom] =A[Baris,Kolom]+ B[Baris,Kolom] Endfor Endfor
Mengalikan Matriks For Baris = 1 to 2 do For Kolom = 1 to 3 do C[Baris, Kolom] = 0 For K = 1 to P do C[Baris,Kolom] =C[Baris,Kolom]+ A[Baris,K] + B[K,Kolom] Endfor Endfor Endfor
Matriks Jarang
Sparse Matrix : matriks yang elemennyabanyak bernilai o (nol). Idenya : bgm mengkonversinya supaya lebih hemat memori
Matriks Segitiga
Matriks Tridiagonal
Ubah Matriks Segitiga jadi Array Sparse Matrix Program Ubah_Matrik_Segitiga_jadi_Array KAMUS Baris, Kolom : integer A : array [1..3, 1..3] of integer S : array [1..6] of integer ALGORITMA JLH 0 For Baris 1 to 3 do For Kolom 1 to Baris do JLH JLH + 1 S[JLH] A[Baris, Kolom] Endfor Endfor Lokasi Elemen Matriks Segitiga Lokasi pada array : L = Baris ( Baris 1 ) ________________ + Kolom 2
Pengalamatan Matriks Ordering 90 102 123 1 A[1,1] A[1,2] A[1,3] 2 A[2,1] A[2,2] A[2,3] A[1,1], A[1,2], A[1,3], A[2,1], A[1,1], A[2,1], A[1,2], A[2,2], Pengalamatan Matriks Row Ordering A[1,1], A[1,2], A[1,3], A[2,1], A[1,1], A[2,1], A[1,2], A[2,2],
X[1,1] Baris ke 1 X[1,2] Baris ke 1 X[1,3] Baris ke 1 X[2,1] Baris ke-2 X[2,2] Baris ke-2 X[2,3] Baris ke-2 Pengalamatan Matriks Column Ordering A[1,1], A[1,2], A[1,3], A[2,1], A[2,2],A[2,3]... jika row major A[1,1], A[2,1], A[1,2], A[2,2], A[2,2],A[2,3].. jika column major X[1,1] Kolom ke 1 X[2,1] Kolom ke 1 X[1,2] Kolom ke 2 X[2,2] Kolom ke 2 X[1,3] Kolom ke 3 X[2,3] Kolom ke 3 Pengalamatan MatriksOrdering Mencari lokasi memori pada Row-major order Lokasi (A[B,K] = Base(A) + w [ N ( B-1) + (K-1) ] Mencari lokasi memori pada Column-major order Lokasi (A[B,K] = Base(A) + w [ M ( B-1) + (K-1) ] Base (a): lokasi awal di memori (alamat A[1,1]) W: jumlah word/byte utk menyimpan 1 elemen M: jumlah baris pada matriks A N: jumlah kolom pada matriks A ANTRIAN / QUEUE
Definisi : struktur data (mirip stack) yang memperbolehkan penyisipan di belakang (rear) dan penghapusan elemen di depan (front). Contoh : Penjualan karcis kereta, bioskop Penjadualan pencetakan (spooling system) Penjadualan pemakaian CPU Pemakaian I/O pada sistem komputer Penyimpan barang di Apotek
OPERASI DASAR AntrIan Dua operasi dasar ANTRIAN : TAMBAH AMBIL AMBIL TAMBAH
TAMBAH ELEMEN Struktur Data Antrian ABCD Depan = 0 Belakang = 0
Depan = 1 Belakang = 1
Depan = 1 Belakang = 2
Depan = 1 Belakang = 1
Depan = 0 Belakang = 0
KAMUS DATA Antrian Kamus Data : Q : array [1..4] of Char Depan : Integer Belakang : Integer 0 Depan Q 0 Belakang
SENARAI / LINK LIST Definisi : struktur data yang terdiri dari rantaian elemen sejenis yang saling berhubungan. Setiap elemen memiliki pendahulu dan penerusnya (kecuali elemen terakhir) Contoh : Struktur ini mirip kereta api, dimana kepalanyaseperti lokomotif, elemennya seperti gerbong kereta dan datanya seperti penumpang/barang Elemen Senarai Kamus Data : Info : array [1..4] of String Next : array [1..4] of Integer
Dua Notasi : INFO (x) : Data yang ada di alamat X NEXT (x) : Alamat elemen berikut setelah X
3.Sisip_Akhir : menyisipkan elemen di akhir 4.Hapus_Awal : menghapus elemen di awal 5.Hapus_Akhir : menghapus elemen di akhir
POHON / TREE Struktur Data Struktur data yang terdiri dari akar (root), dan subpohonsubpohon dalam susunan berhirarki
Cara penulisan / penggambaran suatu pohon Struktur Data Pohon Diagram Pohon
NOTASI POHON Cara penulisan / penggambaran suatu pohon Struktur Data Pohon Notasi Kurung (A(B(D,E(I,J)),C(F,G,H))) atau (A (B(D)(E(I)(J))) (C(F)(G)(H))) Struktur Data Pohon yang maksimal memiliki 2 anak. KAMUS DATA POHON BINER Struktur Data Pohon Kamus Data Type BTree = record < Kiri : BTree Info : char Kanan : BTree > P : BTree OPERASI DASAR
Struktur Data Pohon CreateTree(P) : membuat pohon biner baru EmptyTree(P) : memeriksa apakah pohon biner kosong ? InsertTree(P,N) : menyisipkan simpul baru DeleteTree(P,N) : menghapus simpul Info(P) : mengetahui/mencetak isi simpul P Traversal : penelusuran pohon biner
POHON BINER TERURUT menyisipkan simpul dgn aturan : simpul yang lebih kecil diletakkan di sebelah kiri simpul Procedure SisipUrutBTree(input/output P:BTree, input N:integer) If EmptyTree(P) then CreateTree(P) InsertTree(P,N) {untuk info(P)} Else If N < info(P) then SisipUrutBTree(P.kiri,N) else SisipUrutBTree(P.kanan,N) Endif Endif
LATIHAN NOTASI POHON Struktur Data Pohon 2, 3, 4, 5, 50, 10, 15, 13, 20, 12, 10, 5, 7
KONVERSI POHON KE POHON BINER Anak pertama menjadi anak kiri, anak ke-2 menjadi cucu kanan, ke-3 jadi cicit kanan dst
Notasi aritmatik : (A*B+C)/(D^E) Notasi polish : - Pre-Fix : /+*ABC^DE - Post-Fix : AB*C+DE^/ - In-Fix : A*B+C/D^E
Buat pohon terurut dan buat menjadi pohon seimbang dari nodenode ini : 20, 30, 10,12,40, 50, 60
GRAF Graf adalah kumpulan simpul (vertices atau nodes) yang dihubungkan satu sama lain melalui sisi / busur (edges) Perbedaan graf dengan pohon : - graf mungkin terjadi siklus (cycle) - graf dapat terdiri lebih dari satusambungan
Siklus sederhana : (1,2,3,1), (4,5,6,7,4), (4,5,6,4) dan (4,6,7,4). Lintasan bukan siklus : (1,2,4,6,8). Siklus tidak sederhana : (1,2,1) dan (4,5,6,4,7,6,4).
REPRESENTASI GRAF / ADJENCY
SORTING / PENGURUTAN DATA Proses menyusun kumpulan data yang seragam dengan aturan urut menaik (ascending), atau urut menurun (descending) Aturan : Menurun / ascending : az, 1100 3, 8, 18, 24, 69, 70 Menaik / descending : za, 1001 70, 69, 24, 18, 8, 3 KLASIFIKASI KE-1 Berdasarkan perbandingan (comparison-based sorting). - pengurutan seleksi (selection sort) - pengurutan sisip (insertion sort) - pengurutan gabung (merge sort) - pengurutan cepat (quick sort) - pengurutan himpun (heap sort) - pengurutan gelembung (bubble sort)
- pengurutan shell (shell sort) - pengurutan pohon (tree sort) KLASIFIKASI KE-2 Berdasarkan prioritas antrian (priority queue sorting method). - pengurutan seleksi (selection sort) - pengurutan himpun (heap sort) KLASIFIKASI KE-3
Berdasarkan penyisipan dan penjagaan terurut (insert and keep sortedmethod).
PASS KETUJUH
ALGORITMA BUBLE SORT Kamus Const N : integer = 8 { misalkan jumlah elemen array maksimum = 8 } Type A = array [ 1..N ] of integer Var I, J, bubble : integer ALGORITMA For I 1 to (N-1) do For J N downto (I+1) do If A[J] < A[J-1] then Bubble A[J] A[J] A[J-1] A[J-1] Bubble Endif Endfor Endfor MERGE SORT YAITU pengurutan untuk data yang jumlahnya besar, dimana data tidak semuanya dapat dimuat dalammemori utama (main memory),sehingga harus disimpan dalam penyimpanan sekunder (secondarystorage) berupa berkas (file).