Anda di halaman 1dari 44

Struktur Data Array

SORTING & SEARCHING


ARRAY
• Array merupakan kumpulan elemen yang bertipe
sama dalam ururtan tertentu yang menggunakan
nama yang sama.
• Letak atau posisi dari elemen array ditunjukkan
oleh index atau posisi.
• Array termasuk dalam struktur data statis artinya
lokasi memori untuk array tidak dapat ditambah
atau dikurangi selama program dijalankan.
• Untuk mengubah ukuran lokasi memori suatu
array harus diperbaiki dalam listing programnya.
MENDEFINISIKAN ARRAY
• Mendefinisikan array meliputi :
▫ Tipe data elemen array
▫ Nama array
▫ Jumlah elemen array
• Misal :
float nilai[5];

• Subscript array (index array) dimulai dari nol.


JENIS ARRAY:
• Array 1 dimensi
• Array 2 dimensi
• Array multi dimensi
Array 1 Dimensi
• Array satu dimensi merupakan array yang
memiliki penunjuk index hanya satu.
• Sebelum digunakan maka array harus
dideklarasikan terlebih dahulu. Nilai awal array
dimulai dari 0 (nol).
• Jika dituliskan banyaknya maksimum elemen
adalah N, berarti indeks yang akan digunakan
adalah 0, 1, 2, ..., N-1
Bentuk deklarasi
Tipe_data nama_var_array[ukuran];
Dimana:
tipe_data : menyatakan jenis tipe data elemen array
nama_var_array: menyatakan nama variabel yang dipakai
ukuran : menunjukkan maksimal banyak elemen array.

Contoh: int nilai [10];


Ilustrasi array dimensi 1

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

Inisialisasi array sama dengan memberi nilai awal


Bentuk inisialisasi:

• 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 adalah elemen/harga yang akan disimpan di


nama_var_array pada indeks/posisi.
Dibaca dari media masukkan
Elemen dibaca dari media masukkan dengan
keyboard
contoh:
cin>>nilai[0]; membaca elemen array posisi ke-0
cin>>nilai[1]; membaca elemen array posisi ke-1
2. Array 2 Dimensi
• Array dua dimensi, yang merupakan perluasan dari array satu
dimensi,
• Sebuah matriks yang tersusun dalam bentuk baris dan kolom.
• Bentuk umum pendeklarasian array 2 dimensi:

tipe_data nama_var_array [banyak_baris][banyak_kolom];

• Dimana:

tipe_data:menyatakan tipe data elemen array


banyak_baris: menyatakan maksimum banyak baris
banyak_kolom: menyatakan maksimum banyak kolom
• Contoh:
int mat_A[3][4]
• Digambarkan: kolom
baris 0 1 2 3
0
1
2

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:

Inisialisasi Matriks A di samping dapat


dilakukan dengan:
Int Mat_A={{2,3,9,2},{7,5,4,3},{3,2,5,4}}
Latihan
• Buatlah program untuk mencetak elemen-
elemen Matriks A berukuran 3x4 yang telah
diinisialisasikan.
• Lakukan hal yang sama dalam satu program
untuk mencetak matrik B.
• Kemudian lakukan penjumlahan matrik A dan
matrik B.
SORTING
• Pemanfaatan Array
DEFINISI SORTING
• Pengurutan (sorting) adalah proses mengatur
sekumpulan obyek menurut urutan atau
susunan tertentu.
• Urutan obyek dapat menaik (ascending)
maupun menurun (descending).
• Data yang diurutkan dapat berupa data bertipe
data dasar atau tipe data bentukan (structure).
• Jika data bertipe structure, maka harus
disebutkan berdasarkan field data tertentu.
Beberapa metode untuk pengurutan:
• Bubble Sort
• Selection Sort
• Quick Sort
• Merge Sort
• Heap Sort
• Shell Sort
• Radix Sort
• Tree Sort
• Maximum Sort
• Insertion Sort
Buble Short
• Pengurutan yang membandingkan elemen yang
sekarang dengan elemen-elemen berikutnya.
• Pembandingan elemen dapat mulai dari awal
atau akhir
• Jika elemen yang sekarang lebih besar (untuk
urut menaik) atau lebih kecil (untuk urut
menaik) dari elemen berikutnya, maka posisi
ditukar jika tidak maka posisi tetap.
contoh
25, 72, 30, 45, 20, 15, 6, 50
Langkah 1:
25 72 30 45 20 15 6 50
25 72 30 45 20 6 15 50
25 72 30 45 6 20 15 50
25 72 30 6 45 20 15 50
25 72 6 30 45 20 15 50
25 6 72 30 45 20 15 50
6 25 72 30 45 20 15 50
• Langkah 2:
6 25 72 30 45 20 15 50
6 25 72 30 45 15 20 50
6 25 72 30 15 45 20 50
6 25 72 30 30 45 20 50
6 25 72 15 30 45 20 50
6 25 15 72 30 45 20 50
6 15 25 72 30 45 20 50
• Langkah 3

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,10) (5,6) (5,23) (6,7) (1,2)

(2,5,6,10) (5,6,7,23) (1,2)

(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

(y – yL) / (yu – yL) = (x – xL) / (xu – xL)


(15 – 2) / (21 – 2) = (x – 1) / (9 – 1)
x = (104/19) + 1
= 5,…. + 1 = 5 + 1 = 6
Tugas
Suatu file tidak terurut dengan key sebagai berikut:
5,7,8,3,2,1,6,9,15,14,12,13,11,4,10
Lakukan sort secara ascending dengan menggunakan :
▫ Insertion Sort
▫ Quick Sort
▫ Two-way Merge Sort
▫ Radix Sort
• Kemudian gambarkan pohon binernya (binary tree) yang
menunjukkan algoritma penelusuran dari soal no. 1
dengan menggunakan:
▫ BST
▫ FST

Anda mungkin juga menyukai