BAB 8 SORTIR - BAB 8

BAB 8
SORTIR
Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan
obyek menggunakan aturan tertentu.
Secara umum ada dua jenis pengurutan data yaitu :
a. Pengurutan secara urut naik (Ascending)
yaitu dari data yang nilainya paling kecil sampai data yang nilainya paling besar.
b. Pengurutan secara urut turun (Descending)
yaitu dari data yang mempunyai nilai yang paling besar sampai paling kecil.
Berdasarkan media yang digunakan terdapat 2 metode sortir :
1. Sortir Internal
Metode ini dipakai jika himpunan data yang akan disortir kecil, sehingga proses sortir
tidak membutuhkan tempat yang besar di memori utama komputer.
2. Sortir Eksternal
Metode ini dipakai jika himpunan data yang akan disortir cukup besar, sehingga
dibutuhkan media atau alat tambahan seperti Magnetik Tape, Disket dan sebagainya.
Dua hal yang mempengaruhi kecepatan algoritma sortir adalah :
1. Jumlah operasi perbandingan yang dilakukan.
2. Jumlah operasi pemindahan data dilakukan.
Pada garis besarnya ada tiga teknik utama yang dapat dilakukan dalam melakukan
sortir yaitu :

1. Sortir Penyisipan atau Insertion Sort.
2. Sortir Pemilihan atau Selection Sort.
3. Sortir Penukaran atau Exchange Sort.
Asumsi : Sortir secara Ascending
1. Sortir Penyisipan
Diketahui himpunan data :
(1)
(2)
(3)
(4)
(5)
(6)
(7)
44
55
12
42
94
18
7

i = 2 bandingkan el(2) dengan el(1) yaitu 55 > 44 (tidak dilakukan pertukaran)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
12
42
94
18
7
44
55
di sini a[1] dan a[2] sudah terurut
i = 3 bandingkan el(3) dengan el(2) yaitu 12 < 55 (dilakukan pertukaran)
(1)
(2)
(3)

(4)
(5)
(6)
(7)
44
12
55
42
94
18
7
bandingkan el(2) dengan el(1) yaitu 12 < 44 (dilakukan pertukaran)
(1)
(2)
(3)
(4)
(5)
(6)
42
94

18
12
44
55
di sini a[1], a[2] dan a[3] sudah terurut

(8)
67
(8)
67

(8)
67

(7)
7

(8)
67


(1)
(2)
(3)
(4)
(5)
(6)
(7)
12
44
55
42
94
18
7
i = 4 bandingkan el(4) dengan el(3) yaitu 42 < 55 (dilakukan pertukaran)
(1)
(2)
(3)
(4)
(5)

(6)
(7)
12
44
42
55
94
18
7

(8)
67
(8)
67

bandingkan el(3) dengan el(2) yaitu 42 < 44 (dilakukan pertukaran)
(1)
(2)
(3)
(4)

(5)
(6)
12
42
44
55
94
18

(8)
67

(7)
7

Struktur Data 1

bandingkan el(2) dengan el(1) yaitu 42 > 12 (tidak dilakukan pertukaran)
(1)
(2)

(3)
(4)
(5)
(6)
(7)
94
18
7
12
42
44
55
di sini a[1], ..., a[4] sudah terurut.

(8)
67

(1)
(2)
(3)

i=5
12
42
44
di sini a[1], ..., a[5] sudah terurut.

(4)
55

(5)
94

(6)
18

(7)
7

(8)
67


(1)
(2)
(3)
i=6
12
18
42
di sini a[1], ..., a[6] sudah terurut.

(4)
44

(5)
55

(6)
94

(7)

7

(8)
67

(1)
(2)
(3)
i=7
7
12
18
di sini a[1], ..., a[6] sudah terurut.

(4)
42

(5)
44

(6)
55

(7)
94

(8)
67

(1)
(2)
(3)
i=8
7
12
18
di sini a[1], ..., a[8] sudah terurut.

(4)
42

(5)
44

(6)
55

(7)
67

(8)
94

Jadi pada setiap langkah ke I, a[1],..., a[I] sudah terurut
2. Sortir Pemilihan
Algoritma :
1. Pilih data dengan key terkecil.
2. Tukarkan data tersebut dengan elemen a[i]
Diketahui himpunan data :
(1)
(2)
(3)
(4)
44
55
12
42
i = 1, Lok = 7
el(7) ditukarkan dengan el(1)
(1)
(2)
(3)
(4)
55
12
42
7
di sini a[1] sudah terurut

(5)
94

(6)
18

(7)
7

(8)
67

(5)
94

(6)
18

(7)
44

(8)
67

(1)
(2)
(3)
(4)
(5)
55
12
42
94
7
i = 2, Lok = 3
el(3) ditukarkan dengan el(2)
(1)
(2)
(3)
(4)
(5)
55
42
94
7
12
di sini a[1] dan a[2] sudah terurut
(1)
(2)
(3)
(4)
(5)
55
42
94
7
12
I = 3, Lok = 6
el(6) ditukarkan dengan el(3)
(1)
(2)
(3)
(4)
(5)
42
94
7
12
18
di sini a[1],.., a[3] sudah terurut

(6)
18

(7)
44

(8)
67

(6)
18

(7)
44

(8)
67

(6)
18

(7)
44

(8)
67

(6)
55

(7)
44

(8)
67

(1)
(2)
(3)
(4)
(5)
(6)
42
94
55
7
12
18
i = 4, Lok = 4
el(4) tetap, karena yang menjadi tujuan adalah a[4]
(1)
(2)
(3)
(4)
(5)
(6)
94
55
7
12
18
42
di sini a[1],.., a[4] sudah terurut

(7)
44

(8)
67

(7)
44

(8)
67

(1)
(2)
(3)
(4)
(5)
94
7
12
18
42
i = 5, Lok = 7
el(7) ditukarkan dengan el(5)
(1)
(2)
(3)
(4)
(5)
7
12
18
42
44
di sini a[1],.., a[5] sudah terurut

(6)
55

(7)
44

(8)
67

(6)
55

(7)
94

(8)
67

Struktur Data 2

(1)
(2)
(3)
(4)
(5)
(6)
55
7
12
18
42
44
i = 6, Lok = 6
el(6) tetap, karena yang menjadi tujuan adalah a[6]
(1)
(2)
(3)
(4)
(5)
(6)
7
12
18
42
44
55
di sini a[1],.., a[6] sudah terurut
(1)
(2)
(3)
(4)
(5)
(6)
7
12
18
42
44
55
i = 7, Lok = 8
el(8) ditukarkan dengan el(7)
(1)
(2)
(3)
(4)
(5)
(6)
7
12
18
42
44
55
di sini a[1],.., a[7] sudah terurut
Proses ini dilakukan sampai dengan langkah ke I-1
Elemen yang sudah terurut sebagai berikut :
(1)
(2)
(3)
(4)
(5)
7
12
18
42
44

(6)
55

(7)
94

(8)
67

(7)
94

(8)
67

(7)
94

(8)
67

(7)
67

(8)
94

(7)
67

(8)
94

Perbedaan utama antara Sortir Penyisipan dan Sortir Pemilihan adalah sebagai berikut :
• Pada Sortir Penyisipan, pada setiap langkah hanya diperhatikan satu data saja,
kemudian untuk mencari tempat data diletakkan, dilihat semua data yang akan
menjadi tujuan.
• Sebaliknya pada Sortir Pemilihan, pada tiap langkah dipilih data dari semua
barisan data, kemudian diletakan sebagai satu data baru pada subdaftar tujuan.

3. Sortir Penukaran
a. Sortir Gelembung (Bubble Sort)
Secara umum, kelompok bilangan itu akan memiliki n bilangan. Dengan demikian, kita
akan menemukan n-1 kali letak penyortiran. Letak pertama menggunakan indeks I = 1,
letak kedua menggunakan indeks I = 2, dan seterusnya sampai ke letak ke-(n -1) yang
menggunakan indeks I = n -1.
Pada letak pertama, kita menggunakan indeks J = 1, J = 2 sampai ke J = n.
Pada letak kedua, kita menggunakan indeks J = 2, J = 3 sampai ke J = n. Pada letak
ketiga, kita menggunakan indeks J = 3, J = 4 sampai ke J = n, dan demikian
seterusnya. Atau pada umumnya, nilai indeks J bergerak dari J = 1 sampai ke J = n.
Penyortiran pada letak pertama
I=1

(1)
9

(2)
11

(3)
12

(4)
7

(5)
31

(6)
3

ditukar
(1)
7

(2)
11

(3)
12

(4)
9

(5)
31

(6)
3

ditukar
(1)
3

(2)
11

(3)
12

(4)
9

(5)
31

(6)
7

J=1
J=2
J=3
J=4

J=5
J=6

Struktur Data 3

Penyortiran pada letak kedua
I=2

(1)
3

(2)
11

(3)
12

(4)
9

(5)
31

(6)
7

(1)
3

ditukar
(2)
9

(3)
12

(4)
11

(5)
31

(6)
7

3

ditukar
7

12

11

31

9

J=2
J=3
J=4

J=5
J=6

Penyortiran pada letak ketiga
I=3

(1)
3

(2)
7

(3)
12

(4)
11

(5)
31

(6)
9

(1)
3

(2)
7

ditukar
(3)
11

(4)
12

(5)
31

(6)
9

(1)
3

(2)
7

ditukar
(3)
9

(4)
12

(5)
31

(6)
11

J=3
J=4

J=5
J=6

Penyortiran pada letak keempat
I=4

(1)
3

(2)
7

(3)
9

(4)
12

(5)
31

(6)
11

(1)
3

(2)
7

(3)
9

ditukar
(4)
11

(5)
31

(6)
12

J=4
J=5
J=6

Penyortiran pada letak kelima
I=5

(1)
3

(2)
7

(3)
9

(4)
11

(5)
31

(6)
12

(1)
3

(2)
7

(3)
9

(4)
11

ditukar
(5)
12

(6)
31

J=5
J=6

Struktur Data 4

b. Sortir Biasa (Common Sort)
Misalkan kita mempunyai n buah elemen yang belum terurut. Dalam sortir ini, kita
mempunyai suatu indeks (I) yang menyatakan kedudukan elemen (ke-I) dari himpunan
elemen, dan suatu panji (P) yang menandakan terjadi atau tidaknya pertukaran posisi
elemen dalam himpunan data. Dalam keadaan awal, harga I = 1 dan P = 0, kemudian
lakukan langkah sebagai berikut ini :
a. Jika el(I) < el(I+1), maka posisi el(I) dibiarkan tetap. I bertambah 1, menjadi I = 2.
Patokan kita sekarang adalah el(I+1). El(I+1) kita bandingkan dengan elemen
berikutnya. Proses di atas dilakukan lagi sampai didapat elemen berikutnya yang >
dari el(I+1). Pada saat itu dilakukan langkah b.
b. Jika ele(I) > el(I+1), maka posisi el(I) dan el(I+1) dipertukarkan. Jika terjadi
pertukaran seperti di atas, P berubah dari 0 menjadi 1 (P = 1). Langkah berikutnya
adalah membandingkan el(I+1) dengan elemen berikutnya. Jika el(I+1) < el(I+2)
maka kita lakukan langkah a kembali. Jika el(I+1) > el(I+2) maka posisi el(I+1) dan
el(I+2) dipertukarkan.
c. Setelah mencapai elemen terakhir, jika P = 0 maka proses sortir selesai. Jika P = 1,
maka proses sortir harus diulangi kembali, terhadap urutan yang tadi.
Demikian seterusnya kita lakukan langkah a dan b sampai dengan elemen ke n. Jika
sampai dengan elemen ke n harga P masih sama dengan 1 (P = 1), maka sortir diulangi
kembali sampai didapatkan P = 0. Pada saat pengulangan sortir, harga P dibuat
menjadi 0 (P = 0) dan I dibuat menjadi 1 (I = 1)
Contoh :
Pandang 6 buah elemen yang belum terurut sebagai berikut :
P=0
(1)
(2)
I=1
7
11
Bandingkan el(1) dan el(2)

(3)
12
7 < 11 (tetap)

(4)
3

(5)
31

(6)
9

P=0
(1)
(2)
I=2
7
11
Bandingkan el(2) dan el(3)

(3)
12
11 < 12 (tetap)

(4)
3

(5)
31

(6)
9

P=0
(1)
(2)
I=3
7
11
Bandingkan el(3) dan el(4)

(3)
(4)
(5)
12
3
31
12 > 3 (tukar) dan harga P = 1

(6)
9

P=1
(1)
(2)
I=4
7
11
Bandingkan el(4) dan el(5)

(3)
3
12 < 31 (tetap)

(5)
31

(6)
9

P=1
(1)
(2)
I=5
7
11
Bandingkan el(5) dan el(6)

(3)
(4)
(5)
3
12
31
31 > 9 (tukar) dan harga P = 1

(6)
9

P=1

(1)
7

(2)
11

(3)
3

(4)
12

(4)
12

(5)
9

(6)
31

Karena harga P = 1, ulangi kembali proses sortir, dengan harga P = 0 dan I = 1
P=0
(1)
(2)
I=1
7
11
Bandingkan el(1) dan el(2)

(3)
3
7 < 11 (tetap)

(4)
12

(5)
9

(6)
31

P=0
(1)
(2)
I=2
7
11
Bandingkan el(2) dan el(3)

(3)
(4)
(5)
3
12
9
11 > 3 (tukar) dan harga P = 1

(6)
31

P=1
(1)
(2)
I=3
7
3
Bandingkan el(3) dan el(4)

(3)
11
11 < 12 (tetap)

(6)
31

(4)
12

(5)
9

Struktur Data 5

P=1
(1)
(2)
I=4
7
3
Bandingkan el(4) dan el(5)

(3)
(4)
(5)
11
12
9
12 > 9 (tukar) dan harga P = 1

(6)
31

P=1
(1)
(2)
I=5
7
3
Bandingkan el(5) dan el(6)

(3)
11
12 < 31 (tetap)

(6)
31

(4)
9

(5)
12

P=1

(1)
(2)
(3)
(4)
(5)
(6)
7
3
11
9
12
31
Karena harga P = 1, ulangi kembali proses sortir, dengan harga P = 0 dan I = 1
P=0
(1)
(2)
I=1
7
3
Bandingkan el(1) dan el(2)

(3)
(4)
(5)
11
9
12
7 > 3 (tukar) dan harga P = 1

(6)
31

P=1
(1)
(2)
I=2
3
7
Bandingkan el(2) dan el(3)
P=1
(1)
(2)
I=3
3
7
Bandingkan el(3) dan el(4)

(3)
(4)
(5)
11
9
12
7 < 11 (tetap)
(3)
(4)
(5)
11
9
12
11 > 9 (tukar) dan harga P = 1

(6)
31

P=1
(1)
(2)
I=4
3
7
Bandingkan el(4) dan el(5)

(3)
9
11 < 12 (tetap)

(4)
11

(5)
12

(6)
31

P=1
(1)
(2)
I=5
3
7
Bandingkan el(5) dan el(6)

(3)
9
12 < 31 (tetap)

(4)
11

(5)
12

(6)
31

(6)
31

P=1

(1)
(2)
(3)
(4)
(5)
(6)
3
7
9
11
12
31
Kita lihat bahwa urutan elemen telah terurut dari kecil ke besar, tetapi harga P masih
sama dengan 1. Jadi, kita lakukan sortir elemen di atas dengan harga P = 0 dan I = 1
P=0
(1)
(2)
I=1
3
7
Bandingkan el(1) dan el(2)

(3)
9
3 < 7 (tetap)

(4)
11

(5)
12

(6)
31

P=0
(1)
(2)
I=2
3
7
Bandingkan el(2) dan el(3)

(3)
9
7 < 9 (tetap)

(4)
11

(5)
12

(6)
31

P=0
(1)
(2)
I=3
3
7
Bandingkan el(3) dan el(4)

(3)
9
9 < 11 (tetap)

(4)
11

(5)
12

(6)
31

P=0
(1)
(2)
I=4
3
7
Bandingkan el(4) dan el(5)

(3)
9
11 < 12 (tetap)

(4)
11

(5)
12

(6)
31

P=0
(1)
(2)
(3)
I=5
3
7
9
Bandingkan el(5) dan el(6)
12 < 31 (tetap)
Karena harga P = 0 maka proses sortir selesai.

(4)
11

(5)
12

(6)
31

(5)
12

(6)
31

Jadi urutan elemen setelah disortir adalah sebagai berikut :
(1)
(2)
(3)
(4)
3
7
9
11

Struktur Data 6

SHELLSORT : Mempercepat Sortir Penyisipan
Dalam hal ini, data dibagi dalam beberapa kelompok yang berbeda. Pada setiap
kelompok dilakukan Sortir Penyisipan. Kemudian banyak kelompok diperkecil
(diciutkan) sehingga banyak data dalam masing-masing kelompok bertambah. Lalu
diberlakukan lagi Algoritma Sortir Penyisipan. Hal ini terus dilanjutkan sampai
banyaknya kelompok yang ada hanya tinggal satu dan mengandung seluruh data.
Hal tersebut menunjukkan bahwa teknik ini lebih cepat dibandingkan dengan teknik
Sortir Penyisipan biasa. Hal ini disebabkan karena pada tahap awal dilakukan beberapa
sortir penyisipan dengan jumlah data sedikit. Karena jumlah kelompok masih cukup
banyak. Pada akhir proses harus dilakukan sortir penyisipan pada seluruh data, tetapi
sortir secara partial yang dilakukan sebelumnya sudah menyebabkan data terurut
sebagian sehingga pada akhirnya jumlah operasi pada sortir penyisipan yang dilakukan
tidak terlalu besar.Jadi pada teknik ini, sortir pada kelompok yang kecil akan sangat
mempengaruhi kecepatan sortir pada kelompok berikutnya, yang mempunyai data
sedikit lebih banyak.
Contoh :
Diketahui 8 buah data yang akan dibagi menjadi 4 kelompok, masing-masing dengan 2
data lalu dibagi ke dalam 2 kelompok data, masing-masing dengan 4 data, dan terakhir
menjadi 1 kelompok dengan 8 data. Untuk setiap tingkat dan kelompok dilakukan Sortir
penyisipan.
Keadaan awal
(1)
44

(2)
55

(3)
12
(1)
44
55
12
42

Kelompok 1 :
Kelompok 2 :
Kelompok 3 :
Kelompok 4 :

(4)
42

(5)
94

(6)
18

(7)
7

(2)
94
18
7
67

(1)
44
18
7
42

(8)
67
(2)
94
55
12
67

Hasilnya sekarang :
(1)
44

(2)
18

(3)
7

(4)
42

(5)
94

(6)
55

(7)
12

(8)
67

Sekarang gabungkan kelompok 1 dan 3 serta kelompok 2 dan 4. Kemudian lakukukan
Sortir Penyisipan Parsial :

Kelompok 1 – 3 :
Kelompok 2 – 4 :

(1)
44
18

(2)
94
55

(3)
7
42

(4)
12
67

(1)
7
18

(2)
12
42

(3)
44
55

(4)
94
67

Hasilnya sekarang :
(1)
7

(2)
18

(3)
12

(4)
42

(5)
44

(6)
55

(7)
94

(8)
67

Sekarang gabungkan menjadi satu kelompok dan kita lakukan Sortir Penyisipan.
(1)
7

(2)
18

(3)
12

(4)
42

(5)
44

(6)
55

(7)
94

(8)
67

(3)
18

(4)
42

(5)
44

(6)
55

(7)
67

(8)
94

Diperoleh hasil akhir :
(1)
7

(2)
12

Struktur Data 7

QUICKSORT
Quicksort adalah sebuah Algoritma Sortir dari model atau tipe Divide and Conquer,
sama seperti metode Shellsort. :
(1)
44

(2)
55

(3)
12

(4)
42

(5)
94

(6)
18

(7)
7

(8)
67

(4)
42

(5)
94

(6)
18

(7)
7

(8)
67

(4)
42

(5)
94

(6)
18

(7)
44

(8)
67

(4)
42

(5)
94

(6)
18

(7)
55

(8)
67

(4)
42

(5)
94

(6)
44

(7)
55

(8)
67

(4)
42

(5)
94

(6)
44

(7)
55

(8)
67

(4)
42

(5)
94

(6)
44

(7)
55

(8)
67

(4)
42

(5)
44

(6)
94

(7)
55

(8)
67

bandingkan 44 dengan 67 (tetap)
(1)
44

(2)
55

(3)
12

bandingkan 44 dengan 7 (tukar)
(1)
7

(2)
55

(3)
12

bandingkan 44 dengan 55 (tukar)
(1)
7

(2)
44

(3)
12

bandingkan 44 dengan 18 (tukar)
(1)
7

(2)
18

(3)
12

bandingkan 44 dengan 12 (tetap)
(1)
7

(2)
18

(3)
12

bandingkan 44 dengan 42 (tetap)
(1)
7

(2)
18

(3)
12

bandingkan 44 dengan 94 (tukar)
(1)
7

(2)
18

(3)
12

Perhatikan, ternyata angka-angka dikiri 44, < 44 dan angka-angka di kanan 44, > 44.
Semua angka yang < 44 membentuk daftar sendiri, demikian pula angka-angka yang
> 44, seperti tampak di bawah ini

(1)
7

(2)
18
Daftar 1

(3)
12

(4)
42

(5)
44

(6)
94

(7)
55
Daftar 2

(8)
67

Jadi angka 44 pada posisi terakhir merupakan tempat yang tepat. Tahap reduksi di atas
dapat diulang terhadap masing-masing daftar yang mengandung 2 atau lebih
elemen.Hal ini diselesaikan dengan menggunakan 2 stack, yang disebut LOWER dan
UPPER.
Lower : 1
Upper : 8

Struktur Data 8

Dokumen yang terkait

PENGEMBANGAN TARI SEMUT BERBASIS PENDIDIKAN KARAKTER DI SD MUHAMMADIYAH 8 DAU MALANG

57 502 20

SOAL ULANGAN HARIAN IPS KELAS 2 BAB KEHIDUPAN BERTETANGGA SEMESTER 2

12 263 2

TEMA 8 UNTUK KELAS 2 K 13

18 286 4

BAB IV HASIL PENELITIAN - Pengaruh Dosis Ragi Terhadap Kualitas Fisik Tempe Berbahan Dasar Biji Cempedak (Arthocarpus champeden) Melalui Uji Organoleptik - Digital Library IAIN Palangka Raya

0 2 20

BAB I PENDAHULUAN A. Latar Belakang - Uji Kualitas Mikrobiologi Minuman Olahan Berdasarkan Metode Nilai MPN Coliform di Lingkungan Sekolah Dasar (SD) dan Madrasah Ibtidaiyah (MI) Kelurahan Pahandut Palangka Raya - Digital Library IAIN Palangka Raya

1 2 12

The effect of personal vocabulary notes on vocabulary knowledge at the seventh grade students of SMP Muhammadiyah Palangka Raya - Digital Library IAIN Palangka Raya

0 0 20

BAB IV HASIL PENELITIAN - Penerapan model pembelajaran inquiry training untuk meningkatkan berpikir kritis dan hasil belajar siswa pada pokok bahasan gerak lurus - Digital Library IAIN Palangka Raya

0 1 23

CHAPTER I INTRODUCTION - The effectiveness of anagram on students’ vocabulary size at the eight grade of MTs islamiyah Palangka Raya - Digital Library IAIN Palangka Raya

0 0 10

BAB II KAJIAN TEORITIK A. Penelitian Sebelumnya - Perbedaan penerapan metode iqro’ di TKQ/TPQ Al-Hakam dan TKQ/TPQ Nurul Hikmah Palangka Raya - Digital Library IAIN Palangka Raya

0 0 26

1 BAB I PENDAHULUAN A. Latar Belakang - Penerapan model Problem Based Instruction (PBI) terhadap pemahaman konsep dan hasil belajar siswa pokok bahasan tekanan Kelas VIII Semester II di SMPN Palangka Raya Tahun Ajaran 2015/2016 - Digital Library IAIN Pala

0 3 80