• Tidak ada hasil yang ditemukan

Array (Tabel) bagian 2

N/A
N/A
Protected

Academic year: 2021

Membagikan "Array (Tabel) bagian 2"

Copied!
22
0
0

Teks penuh

(1)

Array

(Tabel)

bagian 2

bagian 2

Tim Pengajar KU1071

Sem. 1 2009-2010

(2)

Tujuan Perkuliahan

• Mahasiswa dapat menggunakan notasi

pendefinisian dan pengacuan array

dengan benar

• Mahasiswa memahami proses pencarian

• Mahasiswa memahami proses pencarian

nilai ekstrim dan pengurutan elemen yang

dapat dilakukan terhadap array

• Mahasiswa dapat membuat program

dengan menggunakan array

(3)

Harga Ekstrim Tabel

• Pencarian nilai ekstrim (minimum/maksimum) dalam

tabel merupakan proses yang cukup penting

– Mencari mahasiswa dengan nilai tertinggi

– Mengeliminasi nilai tertinggi dan terendah dari suatu percobaan

• Persoalan:

– Diketahui sebuah tabel bilangan integer T[1..N] yang telah diisi

– Diketahui sebuah tabel bilangan integer T[1..N] yang telah diisi

– Tuliskanlah Program Max, yang menghasilkan harga maksimum

dari elemen tabel:

i

[1..N] T

i

Max.

Contoh 1: N = 8, T berisi : { 1, -3, 5, 8, -12, 90, 3, 5}

Output : Maximum adalah 90

Contoh 2: N = 11, T berisi : { -11, 3, 45, 8,3,45,-6,7,8,9,1}

Output : Maksimum adalah 45

(4)

Pencarian Nilai Maksimum

Versi mengembalikan nilai maksimum

procedure MAX1(input T : TabInt, input N : integer, output MAX : integer) { Pencarian harga Maksimum: }

{ I.S. Tabel tidak kosong, karena jika kosong maka maks tidak terdefinisi, N >=0 } { F.S. Menghasilkan harga Maksimum MAX dari Tabel T[1..N] secara sekuensial mulai dari indeks 1..N}

Kamus Lokal :

i : integer {indeks untuk pencarian} i : integer {indeks untuk pencarian} ALGORITMA

MAX ← T

1 {inisialisasi, T1 diasumsikan merupakan nilai maksimum}

i ← 2 {pembandingan nilai maksimum dimulai dari elemen ke-2} while i ≤ N do

if (MAX < Ti) then MAX ← Ti i ← i + 1

{ i > N : semua elemen sudah selesai diperiksa }

Elemen pertama tabel diproses secara khusus

Nilai yang dihasilkan adalah nilai maksimum, indeks tempat nilai maksimum tidak diketahui

(5)

Pencarian Nilai Maksimum

Versi mengembalikan indeks maksimum

procedure MAX2

(input T : TabInt, input N : integer, output IMax : integer)

{ Pencarian indeks dengan harga Maksimum}

{ I.S. Tabel tidak kosong, karena jika kosong maka maks tidak terdefinisi,

N >0 }

{ F.S. Menghasilkan indeks IMax

terkecil

, dengan harga T

IMax

dalam

Tabel T [1..N] adalah maksimum }

Kamus Lokal :

Kamus Lokal :

i : integer

ALGORITMA

IMax

1

i

2

while i

N do

if (T

IMax

< T

i

) then

IMAX

i

i

i + 1

{ i > N : semua elemen sudah selesai diperiksa }

Elemen pertama tabel diproses secara khusus

Tidak menghasilkan nilai maksimum

melainkan indeks dimana nilai maksimum berada

(6)

Pencarian Nilai Maksimum

Versi maksimum dari bil. positif v.1

procedure MAXPOS(input T:TabInt, input N:integer, output MAX:integer) { Pencarian harga Maksimum di antara bilangan positif}

{ I.S. Tabel mungkin kosong: N=0, semua elemen tabel T bernilai positif }

{ F.S. Max berisi nilai elemen tabel yang maksimum. Jika kosong, MAX=-9999 } { Menghasilkan harga Maksimum (MAX) Tabel T [1..N] secara sekuensial mulai dari T1}

Kamus Lokal : Kamus Lokal :

i : integer ALGORITMA

MAX ← -9999 { inisialisasi dengan nilai yang pasti dapat digantikan! dalam hal ini nilai minimum representasi integer } i traversal [1.. N ]

if (MAX < Ti ) then MAX ← T

i

{ i = ??, semua elemen sudah selesai diperiksa }

Semua elemen tabel diperiksa dengan cara yang sama. Oleh sebab itu, nilai MAX harus diinisialisasi dengan nilai yang sudah pasti akan digantikan oleh nilai yang ada di dalam tabel

(7)

Pencarian Nilai Maksimum

Versi maksimum dari bil. positif v.2

procedure MAXPOS(input T:TabInt, input N:integer, output MAX:integer) { Pencarian harga Maksimum di antara bilangan positif}

{ I.S. Tabel mungkin kosong: N=0, semua elemen tabel T bernilai positif }

{ F.S. Max berisi nilai elemen tabel yang maksimum. Jika kosong, MAX=-9999 } { Menghasilkan harga Maksimum (MAX) Tabel T [1..N] secara sekuensial mulai dari T1}

Kamus Lokal : Kamus Lokal :

i : integer ALGORITMA

MAX ← -9999 { inisialisasi dengan nilai yang pasti dapat digantikan! dalam hal ini nilai minimum representasi integer } i 1

while (i N) do

if (MAX < Ti) then MAX Ti i i + 1

(8)

Pengurutan (

Sorting

)

Sorting

atau pengurutan data adalah proses yang sering

harus dilakukan dalam pengolahan data

• Ada 2 macam teknik pengurutan:

pengurutan internal

, terhadap data yang tersimpan di memori

pengurutan eksternal

, terhadap data yang tersimpan di

secondary storage

secondary storage

• Algoritma pengurutan internal yang utama antara lain:

Counting Sort, Maximum Sort, Insertion Sort

, Bubble sort

• Performansi pengurutan data sangat menentukan

performansi sistem, karena itu pemilihan metoda

pengurutan yang cocok akan berperan dalam suatu

aplikasi

(9)

Pengurutan (

Sorting

)

Definisi dan Kamus Umum

• Definisi Persoalan:

Diberikan sebuah Tabel integer T [1..N] yang isinya

sudah terdefinisi. Tuliskan sebuah algoritma yang

mengurutkan elemen tabel sehingga terurut membesar :

T

1

T

2

T

3

...

T

N

T

1

T

2

T

3

...

T

N

• Kamus Umum:

KAMUS

constant NMax : integer = 100

type TabInt : array [1..NMax] of integer

N : integer {indeks efektif maksimum tabel yang terdefinisi, N ≤ Nmax}

{ jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut } T : TabInt { tabel integer }

(10)

Counting Sort

(Pengurutan dengan Pencacah)

• Pengurutan dengan pencacahan adalah

pengurutan yang paling sederhana

• Jika diketahui bahwa data yang akan diurut

mempunyai daerah jelajah (

range

) tertentu, dan

merupakan bilangan bulat, misalnya [Min..Max]

maka cara paling sederhana untuk mengurut

merupakan bilangan bulat, misalnya [Min..Max]

maka cara paling sederhana untuk mengurut

adalah :

– Sediakan array TabCount [Min..Max] yang elemennya

diinisialisasi dengan nol, dan pada akhir proses

TabCount

i

berisi banyaknya data pada tabel asal

yang bernilai i

– Tabel dibentuk kembali dengan menuliskan kembali

harga-harga yang ada berdasarkan isi dari TabCount

(11)

Counting Sort

Ilustrasi

1

1

2

3

3

6

4

3

1

2

3

4

1

2

3

4

1. Elemen Tabel TabCount diinisialisasi 0 0 0 0 0 2. Telusuri TabInt, sambil mengupdate elemen TabCount TabInt TabCount 1 1 2 1 2 3 1 1 3 3 TabInt’

4

3

5

5

6

4

7

1

8

3

9

5

10

6

4

5

6

4

5

6

7

8

9

10

0 0 0 elemen TabCount TabCount berisi jumlah kemunculan elemen pada TabInt

1 1 1 2 2 3. Telusuri TabCount,

untuk mengisi TabInt sesuai isi TabCount

TabInt terurut 3 3 4 5 5 6 6

(12)

Counting Sort

Algoritma

procedure CountSORT (input/output T : TabInt, input N : integer) { mengurut tabel integer [1..N] dengan pencacahan}

Kamus Lokal :

{ValMin & ValMax: batas Minimum dan Maximum nilai dalam T, harus diketahui} TabCount : array [ValMin..ValMax] of integer [0..NMax]

i, j : integer { indeks untuk traversal tabel }

K : integer { jumlah elemen T yang sudah diisi pada pembentukan kembali } ALGORITMA

{ Inisialisasi TabCount } Elemen Tabel TabCount

{ Inisialisasi TabCount } i traversal [ValMin..ValMax] TabCounti0 { Counting } i traversal [1..N] TabCountTiTabCount Ti + 1 { Pengisian kembali : T1T 2 ... ≤ TN } K ← 0 i traversal [ValMin..ValMax] if (TabCounti0) then j traversal [1..TabCounti] K ← K + 1 TKi

Elemen Tabel TabCount diinisialisasi 0

Telusuri TabInt, sambil mengupdate elemen

TabCount TabCount berisi jumlah kemunculan elemen pada TabInt

Telusuri TabCount, untuk mengisi TabInt sesuai isi TabCount TabInt terurut

(13)

Selection Sort

(Pengurutan berdasarkan Seleksi)

Contoh : maksimum suksesif

• Idenya adalah:

– Cari indeks penampung nilai maksimum ‘tabel’

– Tukar elemen pada indeks maksimum dengan

elemen ter’ujung’

elemen ter’ujung’

• elemen terujung "diisolasi“, tidak disertakan pada proses

berikutnya

• proses diulang untuk sisa tabel

• Hasil proses: tabel terurut

mengecil

T

1

T

2

T

3

...

T

N

• Proses dilakukan sebanyak N-1 tahapan

(disebut "pass")

(14)

Selection Sort

Ilustrasi

• Proses diulang untuk

elemen 1..NMax-1

• Pada iterasi ke-i:

– Elemen 1..i-1 sudah

terurut

– Cari indeks dgn nilai

12 35 10

60

Elemen maksimum 2..6, tukar dengan elemen 2 35 30 1 2 3

– Cari indeks dgn nilai

maksimum elemen

i..NMax

– Tukar elemen ke-i

dengan elemen pada

indeks dengan nilai

maksimum

10 60 30 25

Elemen maksimum 1..6, tukar dengan elemen 1

12

Elemen maksimum 3..6, tukar dengan elemen 3

30

10

Elemen maksimum 4..6, tukar dengan elemen 4

25

12 Elemen maksimum 5..6, tukar

dengan elemen 5 12 10 3 4 5 6

(15)

Selection Sort

Algoritma

procedure MAXSORT (input/output T : TabInt, input N : integer)

{ mengurut tabel integer [1..N] terurut mengecil dengan maksimum suksesif } Kamus Lokal :

i : integer { indeks untuk traversal tabel } Pass : integer { tahapan pengurutan }

Temp : integer { memorisasi harga untuk penukaran }

IMax : integer { indeks, dimana T [Pass..N] bernilai maksimum } Algoritma

Pass traversal [1..N-1] Pass traversal [1..N-1]

{ Tentukan Maximum [Pass..N] } IMax ← Pass

i traversal [Pass+1..N]

if (TIMax < Ti ) then IMax ← i

{ TIMax adalah maximum T[Pass..N] } {Tukar TIMax dengan TPass }

Temp ← T IMax TIMaxT Pass TPassTemp { T[1..Pass] terurut: T1T 2≥T3 .. ≥TPass}

{Seluruh tabel terurut, T1T2T3 ... TN }

Cari indeks dgn nilai maksimum (di

bagian tabel yang belum terurut)

Tukarkan elemen pada indeks maksimum

dengan elemen terujung dari bagian tabel yang belum terurut

(16)

Insertion Sort

(Pengurutan dengan Penyisipan)

• Idenya adalah:

– mencari tempat yang "tepat" untuk setiap elemen

tabel dengan cara menyisipkan elemen tersebut pada

tempatnya di bagian tabel yang sudah terurut

– Proses dilakukan sebanyak N-1 tahapan (disebut

– Proses dilakukan sebanyak N-1 tahapan (disebut

"pass").

– Pada setiap Pass:

• tabel "terdiri dari" dua bagian: yang sudah terurut yaitu

[1..Pass - 1] dan yang belum terurut yaitu [Pass..NMax]

• Ambil elemen T

Pass

, sisipkan ke dalam T[1..Pass-1] dengan

tetap menjaga keterurutan

dengan cara menggeser

elemen-elemen, hingga ditemukan tempat yang cocok untuk

elemen T

Pass

tersebut

(17)

Insertion Sort

Ilustrasi

• Elemen 1 dianggap

sudah terurut

• Proses diulang untuk

elemen 2..NMax

• Pada iterasi ke-i:

– Elemen 1..i-1 sudah

12 1 2 3 35 10 TabInt Temp 35 25 35 10 12 35 10 6030 30 25

– Elemen 1..i-1 sudah

terurut

– Sisipkan elemen ke-i di

antara elemen 1..i-1

dengan tetap menjaga

keterurutan elemen

• Dapat dicapai dengan cara menggeser

elemen yang nilainya lebih besar 3 4 5 6 10 60 30 25 25 35 60 35 60 30 35 60 30

(18)

Insertion Sort - Algoritma

procedure InsertionSORT(input/output T : TabInt, input N : integer) { mengurut tabel integer [1..N] dengan insertion }

Kamus Lokal :

i : integer { indeks untuk traversal tabel }

Pass : integer { tahapan pengurutan }

Temp : integer { penampung nilai sementara, untuk pergeseran }

ALGORITMA

{ T1 adalah terurut}

Pass traversal [2..N]

Temp ← TPass {Simpan harga TPass sebelum pergeseran }

{ Sisipkan elemen ke Pass dalam T[1..Pass-1] sambil menggeser:} { Sisipkan elemen ke Pass dalam T[1..Pass-1] sambil menggeser:}

i ← Pass-1

while (Temp < Ti) and (i > 1) do

Ti+1Ti { Geser}

i ← i - 1 { Berikutnya }

{Temp ≥ Ti (tempat yg tepat) or i = 1 (sisipkan sbg elmt pertama)}

depend on T, i, Temp

Temp ≥ T

i: Ti+1 ← Temp {Menemukan tempat yg tepat}

Temp < Ti : Ti+1T

i

TiTemp {sbg elemen pertama }

{T[1..Pass] terurut membesar: T1T

2≤ .. ≤ TPass}

{Seluruh tabel terurut, karena Pass = N : T1T

(19)

Latihan

1.

Diberikan definisi berikut ini:

type TMahasiswa : <NIM: string, Nama: string, Nilai: integer [0..100]> type TabMhs: array [1..Nmax] of TMahasiswa

Tuliskan prosedur UrutTabMhs(input/output TMhs: TabMhs, input

N : integer) yang mengurutkan elemen TMhs berdasarkan atribut

Nilai dengan urutan mengecil. Pengurutan dilakukan dengan

pendekatan seleksi.

pendekatan seleksi.

2.

Bisakah persoalan no. 1 diselesaikan dengan menggunakan

pendekatan pencacah (

counting sort

)? Jelaskan jawaban anda.

3.

Tuliskan prosedur InputTerurut(input/output T: TabInt, input/output

N: integer, X: integer), yang memasukkan X ke dalam T. T harus

selalu dalam kondisi terurut (sebelum dan sesudah pemasukan

elemen X). N menyimpan indeks efektif maksimum T

(20)

Counting Sort

Ilustrasi

1

1

2

3

3

6

4

3

1

0

2

0

3

0

4

0

1

2

2

0

3

3

4

1

1

1

2

1

3

3

4

3

1. Elemen Tabel TabCount diinisialisasi 0 3. Telusuri TabCount, untuk mengisi TabInt sesuai isi TabCount

TabInt terurut

4

3

5

5

6

4

7

1

8

3

9

5

10

6

4

0

5

0

6

0

4

1

5

2

6

2

4

3

5

3

6

4

7

5

8

5

9

6

10

6

2. Telusuri TabInt, sambil mengupdate elemen TabCount TabCount berisi jumlah

kemunculan elemen pada TabInt

(21)

Selection Sort

Ilustrasi

• Proses diulang

untuk elemen

1..NMax-1

• Pada iterasi ke-i:

– Elemen 1..i-1

sudah terurut

12 35 10 60 35 10 1 2 3 60 35 10 60 35 30 60 35 30 60 35 30

sudah terurut

– Cari indeks dgn

nilai maksimum

elemen i..NMax

– Tukar elemen

ke-i dengan

elemen pada

indeks dengan

nilai maksimum

10 60 30 25 10 12 30 25 3 4 5 6 10 12 30 25

Elemen maksimum pada iterasi

Elemen yang akan menampung posisi elemen maksimum

30 12 10 25 30 25 10 12 30 25 12 10

(22)

Insertion Sort

Ilustrasi

Elemen 1 dianggap

sudah terurut

Proses diulang untuk

elemen 2..NMax

Pada iterasi ke-i:

– Elemen 1..i-1 sudah terurut 12 1 2 3 35 10 35 12 35 10 35 10 35 12 10 35 12 10 30 12 10 25 12 terurut

– Sisipkan elemen ke-i di antara elemen 1..i-1 dengan tetap menjaga keterurutan elemen • Dapat dicapai dengan cara menggeser elemen yang nilainya lebih besar 3 4 5 6 10 60 30 25

Elemen yang akan disisipkan

10 60 30 25 35 60 30 25 35 60 30 25 30 35 60 25 25 30 35 60

Referensi

Dokumen terkait

Halaman 6 LAMPIRAN II PENJABARAN PERTANGGUNGJAWABAN - PENJABARAN LAPORAN REALISASI ANGGARAN PENDAPATAN DAN

Sebelum melangkah ke tahap selanjutnya penulis melakukan pengamatan awal dengan meninjau ke lokasi Terminal Hamid Rusdi, dalam hal ini yang yang diamati bagaimana

Penentuan varians bersyarat dari sebuah peubah acak diberikan peubah acak lainnya, baik diskrit maupun kontinu dijelaskan dalam Definisi 7.12... 2 FUNGSI PEMBANGKIT

Beban maksimum aktual komposisi 8% yang dihasilkan lebih kecil dari beban rencana yaitu 90,02 Kn dengan perbedaan sebesar 41,41 kN Pola retak dan keruntuhan yang terjadi pada

Perusahaan dan anak perusahaan telah menghitung dampak perubahan tarif pajak tersebut dalam perhitungan aset pajak tangguhan dan membukukannya sebagai bagian dari beban pajak

penelitian Rahmanita (2014) adalah Perbedaan Kecenderungan Narsistik Antara Laki-Laki Dan Perempuan Pengguna Jejaring Sosial Instagram dan penelitian Vervuurt

Mengurangi seksual ( peran, tuntunan dan tanggung jawab ). Membentuk sikap dan memberikan pengertian terhadap seks dalam semua manifestasi yang bervariasi. Memberikan pengertian

Hasil pengujian tarik komposit hibrid kenaf/E- glass LDPE menunjukkan bahwa semakin bertambahnya fraksi volume serat E-glass menyebabkan kekuatan komposit semakin