Teknik Pencarian, Teknik Pengurutan

Preview:

DESCRIPTION

dsda

Citation preview

Teknik Pencarian, Teknik PengurutanDan Matriks

RINI TISNAWATI

Metode Pencarian yang Penting

• Pencarian berurutan– Metode tanpa Sentinel– Metode dengan Sentinel

• Pencarian Biner

Teknik Pencarian ( Searching )

• Teknik Pencarian ( Searching ) pada array adalah mencari suatu nilai yang diinginkan pada tabel array.

• Pencarian di tabel array diklasifikasikan menjadi :– Pencarian sekuensial ( sequential search ).

Pencarian sekuensial tidak mensyaratkan tabel terurut.

– Pencarian biner ( binary search).Pencarian biner mensyaratkan tabel terurut.

Deskripsi : Pencarian sekuensial• Diketahui TI bertipe TabInt, telah diisi. Tulis procedure yang jika

diberikan X bernilai integer akan mencari apakah harga X terdapat di TI. Pencarian dilakukan secara berurutan mulai elemen pertama sampai ketemu atau sampai elemen terakhir. Program menghasilkan indeks IX dimana X diketemukan pertama kali. IX diberi harga 0 jika tidak ketemu. Pencarian segera dihentikan begitu harga pertama diketemukan.

Pendeklarasian array :Const

Idxawal = 1;Idxakhir = 100;

TypeTypeInfo = integer;TabInt = Array [Idxawal..Idxakhir] of TipeInfo;

Var<identifier_variabel> : TabInfo;

Aturan pembuatan program :

• Procedure InputTabInt (Var TI : TabInt);• Procedure SeqSearch (TI : TabInt; X : Integer;

Var IX : Integer);• Procedure OutputIX (IX: Integer);

Algoritma Procedure SeqSearch (TI : TabInt; X : Integer; Var IX : Integer);

i IdxawalfoundFalseWhile i <= Idxakhir . and . not found doIf TI[i] = X thenFound trueElsei i + 1EndifEndWhileIf found thenIX iElseIX 0Endif

Pencarian BinerDeskripsi :

• Diketahui TI bertipe TabInt, telah diisi dan isinya terurut menaik. Tulis prosedur yang jika diberikan X bernilai integer akan mencari apakah harga X ada di TI. Pemeriksaan dilakukan dengan mereduksi elemen tabel array, menjadi separuh jumlah elemen tabel semula, yaitu :

– Bandingkan harga yang dicari dengan harga elemen tengah.– Jika sama, berarti ketemu.– Jika yang dicari lebih kecil, berarti pencarian dengan cara yang sama

harus dilakukan terhadap elemen-elemen di belahan atas.– Jika harga yang dicari lebih besar, berarti pencarian dengan cara

yang sama harus dilakukan terhadap elemen-elemen di belahan bawah.

• Prosedur menghasilkan harga indeks IX dimana X diketemukan pertama kali. IX diberi harga 0 jika pencarian tidak ketemu. Pencarian segera dihentikan begitu diketemukan.

Algoritma Procedure BinSearch (TI : TabInt; X : Integer ; Var IX : Integer);Atas IdxawalBawah IdxakhirTengah ( Atas + Bawah ) div 2While Atas < Bawah . and . TI[Tengah] <> X do

If TI[Tengah] < X thenAtas Tengah + 1

ElseBawah Tengah – 1

EndifTengah ( Atas + Bawah ) div 2;

EndWhileIf TI[Tengah] = X then

IX TengahElse

IX 0Endif

Teknik Pengurutan ( Sorting )Sorting atau pengurutan data adalah proses yang sering dilakukan dalam pengolahan data. Mesin otomatik yang pertama kali lahir adalah mesin pengurut (masih dipakai sampai saat ini).

Pengurutan dibedakan menjadi dua, yaitu :1. Pengurutan internal, yaitu pengurutan terhadap

sekumpulan data yang disimpan dalam media internal komputer, dapat diakses elemennya secara langsung. Pengurutan terhadap array (tabel).

2. Pengurutan eksternal, yaitu pengurutan data yang disimpan di memori sekunder, biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori primer.

Pengurutan Berdasarkan Seleksi

GagasanMenghasilkan nilai minimum tabel (untuk efisiensi, hanya indeks dimana harga minimum ditemukan yang dicatat), kemudian menukarnya dengan elemen terujung, “diisolasi” dan tidak diikutsertakan pada proses berikutnya. Proses diulang untuk sisa tabel.

Procedure MaxSort (Var TI : TabInt);Var

I : integer; {indeks untuk traversal array}Pass : integer; {tahapan pengurutan}Temp : integer; {memorisasi harga untuk penukaran}IMin : integer; {indeks, dimana TI[Nmin .. Pass] berharga minimum}

BeginFor Pass = NMin to Nmax – 1 doBegin

{tentukan minimum diantara [Pass .. NMax]}IMax Pass;For I = Pass+1 to Nmax doBegin

If (TI[Max] > TI[I]) thenIMax I;

End;{TI[IMax] adalah minimum TI[Pass .. NMax]}{tukar TI[IMax] dengan TI[Pass]}Temp TI[IMax];TI[IMax] TI[Pass];TI[Pass] Temp;{TI[Nmin .. Pass] terurut membesar : TI[NMin] <= TI[NMin+1] <= … <= TI[Pass]}

End;{seluruh tabel TI[Nmin .. NMax] terurut membesar, karena Pass = NMax, maka :} {TI[NMin] <= TI[Nmin+1] <= … <= TI[NMax]} End;

Pengurutan Berdasarkan Penyisipan

Gagasan• Mencari tempat yang tepat untuk

setiap elemen tabel, dengan secara sequential search, kemudian menyisipkan sebuah elemen tabel yang diproses ke tempat yang seharusnya.

Procedure InsertionSort (Var TI : TabInt);Var

I : integer; {indeks untuk traversal array}Pass : integer; {tahapan pengurutan}Temp : integer; {memorisasi harga untuk penukaran}

Begin{TI[NMin] adalah terurut}For Pass = Nmin+1 to Nmax doBeginTemp TI[Pass]; {simpan harga TI[Pass] supaya tidak tertimpa pergeseran}{sisipkan elemen ke-Pass dalam TI[NMin .. Pass-1] sambil menggeser}I Pass -1;While ( Temp > TI[I] ) And ( I > NMin) doBeginTI[I+1] TI[I]; {geser}I I-1;{elemen berikutnya}End;{(Temp >= TI[I] yaitu tempat yang tepat) atau I=1 harus disisipkan sebagai elemen pertama}If (Temp > TI[I]) thenTI[I+1] Temp; {telah menemukan tempat yang tepat}ElseTI[I+1] TI[I];TI[I] Temp; {sebagai elemen pertama}End;{Seluruh tabel TI[NMin .. NMax] terurut membesar, karena Pass = NMax, maka :}{TI[NMin] <= TI[Nmin+1] <= … <= TI[Pass]}

End;

MATRIKSMerupakan array 2 dimensi, setiap elemen Matriks diidentifikasi oleh nama, indeks

baris dan indeks kolom.12N1

1 2 N2Pendeklarasian Matriks (array 2 dimensi) :Const

Idxawal = 1;Idxakhir = 100;

TypeTipeInfo = …;TabInfo = Array [ Idxawal .. Idxakhir, Idxawal .. Idxakhir] of TipeInfo;

Var<identifikasi_variabel> : TabInfo;

Proses – proses / operasi terhadap Matriks :

1. Pengisian elemen matriks dari fil2. Pengisian elemen matriks khusus dengan

assignment3. Penulisan elemen matriks4. Penjumlahan matriks5. Perkalian matriks

Algoritma-algoritma Operasi Matriks :

1. Pengisian elemen matriks dari filRead N1, N2 {N1 : jumlah baris, N2 : jumlah kolom}I 1While I <= N1 do

J 1While J <= N2 do

Read M (I,J)J J+1

EndWhileI I+1

EndWhile

2. Pengisian elemen matriks khusus dengan assignment

• Matriks N1 x N2 yang semua elemennya 1 :I 1While I <= N1 do

J 1While J <= N2 do

M (I,J) 1J J+1

EndWhileI I+1

EndWhile

• Matriks identitas ordo N

Read NI 1While I <= N do

J 1While J <= N do

If I = J thenM (I,J) 1

ElseM (I,J) 0

EndifJ J+1

EndWhileI I+1

EndWhile

3. Penulisan elemen matriks

I 1While I <= N1 do

J 1While J <= N2 do

Write M (I,J)J J+1

EndWhileI I+1

EndWhile

4. Penjumlahan matriksI 1While I <= N1 do

J 1While J <= N2 do

C (I,J) A (I,J) + B (I,J)J J+1

EndWhileI I+1

EndWhile

5. Perkalian matriksI 1While I <= N1 do {N1 = baris Matriks A}

J 1While J <= N2 do {N2 = baris Matriks B}

C (I,J) 0 K 1While K <= N do {N = kolom matriks A = baris matriks B}

C (I,J) C (I,J) + A (I,K) * B (K,J) K K + 1

EndWhileJ J+1

EndWhileI I + 1

EndWhile

Tugas :

1. Buat Menu dan Program untuk pencarian dan pengurutan dengan menggunakan metoda diatas.

2. Buat Menu dan Program untuk operasi-operasi matriks diatas.

Algoritma operasi Matriks jarang secara Matriks

• Prosedure Transpos(A,B)• {A merupakan matriks yg akan di transspos dalam keadaan sparse, B merupakan

matriks hasil transpos}• m:= A(0,

Recommended