0 1 2 3 4 5 6 7 8 9
Elemen Array
Indeks
Mengisi elemen array satu dimensi
• Inisialisasi array 1 dimensi
• Menggunakan operator penugasan (=)
• Dibaca dari media masukkan
Inisialisasi array 1 dimensi
• Tipe_data
nama_var_array[ukuran]=[elemen-0, elemen-
1,....,elemen-n-1];
• Contoh: int [10]={8, 12,20,15,7, 5, 6, 4, 32, 3};
Contoh diatas berarti kita arus memesan tempat
dimemori komputer sebanyak 10 dengan indeks
0 sampai dengan 9 seperti dibawah ini
8 12 20 15 7 5 6 4 32 3
0 1 2 3 4 5 6 7 8 9
Menggunakan operator
• Mengisi elemen dengan operator penugasan dengan
dilakukan dengan bentuk seperti ini:
nama_var_array[indeks/posisi]=elemen;
• Contoh:
nilai[0]=8;
nilai[1]=12;
nilai[2]=20;
...
Nilai [9]=3;
• Dimana:
elemen
Mengisi elemen array 2 dimensi
• Inisialisasi array 2 dimensi
• Menggunakan operator penugasan
• Dibaca dari media masukkan
Inisialisasi array 2 dimensi
• Bentuk:
tipe_data nama_var_array
[banyak_baris][banyak_kolom]={{baris-0},{baris-1},...,{baris-n-
1}};
Dimana elemen-elemen pada baris-0, baris-1,...,baris-n-1 juga
terdiri dari beberapa kolom yaitu kolom-0, kolom-1, kolom-m-1
• Contoh:
diketahui suatu Matriks A berikut:
6 15 25 72 30 45 20 50
6 15 25 72 30 20 45 50
6 15 25 72 20 30 45 50
6 15 25 20 72 30 45 50
6 15 20 25 72 30 45 50
• Langkah 4
6 15 20 25 72 30 45 50
6 15 20 25 72 30 45 50
6 15 20 25 30 72 45 50
• Langkah 5
6 15 20 25 30 72 45 50
6 15 20 25 30 45 72 50
• Langkah 6
6 15 20 25 30 40 50 72
• #include <iostream.h>
• #include <conio.h>
• #include <iomanip.h>
• void main()
• { int data[8] = {5, 34, 32, 25, 75, 42, 22, 2};
• int swap;
• cout<<"Data sebelum diurutkan : "<<endl;
• for(int i=0; i<8; i++)
• {
• cout<<setw(3)<<data[i];
• }
• cout<<endl;
• for(int i=0; i<7; i++)
• {
• for(int j=0; j<7; j++)
• {
• if(data[j] > data[j+1])
• {
• swap = data[j];
• data[j] = data[j+1];
• data[j+1] = swap;
• }
• }
• cout<<"Data setelah diurutkan : "<<endl;
• for(int i=0; i<8; i++)
• {
• cout<<setw(3)<<data[i];
• }
• getch();
• }
Quick Sort
Contoh :
5 4 3 1 3 5 7 1 5
Akan diurutkan secara Ascending
Pilih data pertama sebagai Pivot kemudian
letakkan semua angka yang lebih kecil di
kiri dan yang lebih besar di kanan
Kemudian lanjutkan untuk kedua belah sisi
sampai semua telah menjadi pivot
4 3 1 3 1 | 5 | 5 7 5
3 1 3 1 | 4 | 5 | 5 | 5 7
1 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
Insertion Sort (1)
misal: 10 2 5 7 8 11 3 2 diurutkan ascending
-------------------------------------------------------------------------------
Mulai dari i = 2
10 2 5 7 8 11 3 2
^
2 disisipkan pada lokasi: di depan 10
jadi: 2 10 5 7 8 11 3 2
-------------------------------------------------------------------------------
i = 3
2 10 5 7 8 11 3 2
^
5 disisipkan pada lokasi: di antara 2 dan 10
jadi: 2 5 10 7 8 11 3 2
-------------------------------------------------------------------------------
i = 4
2 5 10 7 8 11 3 2
^
7 disisipkan pada lokasi: di antara 5 dan 10
jadi: 2 5 7 10 8 11 3 2
Dan Seterusnya
Insertion Sort (2)
misal: 10 2 5 7 8 11 3 2
diurutkan ascending
i=0 : -
i=1 : -, 10
i=2 : -, 2, 10
i=3 : -, 2, 5, 10
i=4 : -, 2, 5, 7, 10
Dst.
Diurutkan descending
i=0 : +
i=1 : +, 10
i=2 : +, 10, 2
i=3 : +, 10, 5, 2
i=4 : +, 10, 7, 5, 2
Dst.
Merge Sort
10 2 5 6 23 5 6 7 2 1
n = 10
SPLIT (berdasarkan hasil n div 2)
(10 2 5 6 23 )( 5 6 7 2 1)
n = 5 n = 5
(10 2 )( 5 6 23 )( 5 6 )( 7 2 1)
n = 2 n = 3 n = 2 n = 3
( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 2 1 )
n=1 n=1 n=1 n=2 n=1 n=1 n=1 n=2
( 10 )( 2 )( 5 )( 6 )( 23 )( 5 )( 6 )( 7 )( 2 )( 1 )
MERGE (Berdasarkan urutan split)
( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 1 2 )
( 2 10 ) ( 5 6 23 ) ( 5 6 ) ( 1 2 7 )
( 2 5 6 10 23 )( 1 2 5 6 7 )
( 1 2 2 5 5 6 6 7 10 23 )
Two Way Merge Sort
10 2 5 6 23 5 6 7 2 1
(2,5,5,6,6,10,23) (1,2)
(1,2,2,5,5,6,6,10,23)
Quick Sort
Contoh :
5 4 3 1 3 5 7 1 5
Akan diurutkan secara Ascending
Pilih data pertama sebagai Pivot kemudian
letakkan semua angka yang lebih kecil di
kiri dan yang lebih besar di kanan
Kemudian lanjutkan untuk kedua belah sisi
sampai semua telah menjadi pivot
4 3 1 3 1 | 5 | 5 7 5
3 1 3 1 | 4 | 5 | 5 | 5 7
1 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
Radix Sort
Radix Sort : Sorting data yang memanfaatkan
aplikasi linked-list
Caranya : membagi data dalam beberapa kolom
(pocket), selanjutnya mengurutkan data
berdasarkan karakter pada posisi kolom terakhir
sampai kolom pertama. Apabila maksimum jumlah
digit dari data tersebut adalah “m”, maka ada m
tahap pengurutan.
Sorting menggunakan RADIX-SORT
Contoh:
73, 65, 52, 77, 24, 83, 17, 35, 96, 62, 41, 87, 09, 11
Jumlah iterasi (m) = jumlah digit
Pocket: 0 1 2 3 4 5 6 7 8 9
41 52 73 24 65 96 77 09
Langkah-1 11 62 83 35 17
(satuan) 87
Gabungkan:
41, 11, 52, 62, 73, 83, 24, 65, 35, 96, 77, 17, 87, 09
Sorting menggunakan RADIX-SORT
• Iterasi Ke 2
Pocket: 0 1 2 3 4 5 6 7 8 9
09 11 24 35 41 52 62 7 83 96
Langkah-1 17 65 73 87
(satuan) 77
• Gabungkan :
09, 11, 17, 24, 35, 41, 52, 62, 65, 73, 77, 83, 87,
96 (hasilnya)
Searching
• Pemanfaatan Array
Searching:
• Algoritma Searching yag akan dibahas:
▫ Binary Search Tree
▫ Fibonacci Search Tree
▫ Linier Interpolation
Binary Search Tree
• Kmid = (K1 + Kn) / 2 dibulatkan ke bawah
(floor function)
• Contoh:
2, 3, 4, 9, 11, 12, 13, 17, 18, 20, 24, 25, 27, 29, 30, 35, 37,
39, 40, 45
• Kmid = (1+20) / 2 = 10
Binary Tree yang Terbentuk
K10
K15
K18
K5
K12 K19
K16
K11 K13 K20
K17
K2 K7
K14
K8
K1 K3 K6
K9
K4
Fibbonaci Search Tree
• Fib = Fm + Fm+1
Barisan bilangan Fibbonaci:
1,1,2,3,5,8,13,21,34,55,…
n=20
Maka yang diambil root adalah bilangan di
bawah n atau sama dengan bil Fibbonaci, yaitu
13.
Dibulatkan ke atas (ceiling function)
Fibbonaci Search Tree
K13 K18
K2
K8 K16
0
K15 K17 K19
K5 K11 K14
K7
K3 K10 K12
K6
K2 K4 K9
K1
Linear Interpolation
Indeks 1 2 3 4 5 6 7 8 9
(key) = x
Datareco 2 5 7 8 9 15 19 20 21
rd = y