Anda di halaman 1dari 37

MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

BAB V
TEKNIK SORTING

A. TEORI
Teknik sorting merupakan Teknik yang digunakan untuk mengurutkan suatu data
berdasarkan aturan tertentu. Algoritma penyortiran digunakan untuk mengatur ulang array atau list
elemen yang diberikanberdasarkan aturan tertentu. Biasanya kita menggunakan operator
perbandingan untuk melakukan proses sorting tersebut. Operator perbandingan digunakan untuk
menentukan urutan dari elemen baru pada suatu struktur data.
Sorting mengacu pada teknik pengaturan dan mengatur ulang kumpulan data dalam urutan
tertentu. Kumpulan “records” yang disebut daftar dimana setiap record dapat memiliki satu field atau
lebih. Field yang berisi nilai unik disebut sebagai “key field”. Misalnya, direktori nomor telepon
dapat dianggap sebagai record dimana setiap record memiliki 3 field.yaitu nama, alamat, dan nomor
telepon. No telepon yang unik dapat menjadi key field untuk menemukan record apapun dalam list
data.
Penyortiran merupakan operasi yang dilakukan untuk mengatur record suatu tabel atau
daftar dalam suatu urutan sesuai dengan kriteria tertentu. Sorting dilakukan berdasarkan nilai kunci
(key value) dari setiap record.
Setiap record dapat diurutkan baik secara numerik ataupun alfanumerik. Record kemudian
diatur dalam urutan menaik atau menurun tergantung pada nilai kunci numerik.
Terdapat banyak jenis teknik sorting, 4 diantaranya sebagai berikut:
• Insertion sort
• Bubble Sort
• Merge Sort
• Selection sort

1. Insertion sort
Insertion sort adalah mekanisme penyortiran. Elemen array dibandingkan satu sama lain
secara berurutan dan kemudian diatur secara bersamaan dalam beberapa urutan tertentu. Analoginya
seperti gaya kita mengatur setumpuk kartu. Sortir ini bekerja berdasarkan prinsip memasukkan
elemen pada posisi tertentu, oleh karena itu namanya Insertion Sort.
Pengurutan insertion sort, salah satu metode sorting yang umum digunakan dalam
melakukan sorting. Algoritma ini melakukan pengurutan data dengan cara membandingkan data satu
persatu. Insertion sort membandingkan data ke-i dan i+1, dimana dengan metode ini akan melakukan
proses traversal, algoritma ini menentukan posisi array setelah dibandingkan, jika data ke-i dan i+1

79
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

sudah betul posisinya (ascending/descending), maka tidak perlu lagi memeriksa posisi data
sebelumnya, karena sudah bisa dipastikan data tersebut sudah benar, namun jika tidak,
pembandingan data akan dilakukan terhadap elemen i-1, dan seterusnya hingga posisi data sudah
benar.
Agar dapat lebih mudah dipahami berikut contoh sorting menggunakan insertion sort.
Dimisalkan terdapat 5 elemen data dalam array sebagai berikut :

0 1 2 3 4
25 17 31 13 2

1) Iterasi pertama
a. Bandingkan elemen pertama dan ke-2 yaitu, 25 dengan 17.

0 1 2 3 4
25 17 31 13 2

b. Hasil perbandingan menunjukkan 17 < 25, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

17 25 31 13 2

c. Karena tidak ada lagi data di sebelah kiri 17 saat ini, atau karena 17 berada pada index
paling pertama maka 17 tidak dibandingkan lagi dengan nilai di sebelah kirinya.
2) Iterasi kedua
a. Pembandingan dimulai dari elemen ke-2 atau index 1 yaitu 25 terhadap 31.

0 1 2 3 4
17 25 31 13 2

b. Namun, karena posisi 25 terhadap 31 sudah benar , dimana 25<31. Maka posisi tetap,
tidak terjadi pertukaran.

0 1 2 3 4
17 25 31 13 2

3) Iterasi ketiga
a. Pembandingan dilanjutkan ke elemen ke-3 atau index 2 yaitu 31 terhadap elemen
disebelah kanannya yaitu 13.

80
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

0 1 2 3 4
17 25 31 13 2

b. Hasil perbandingan menunjukkan 13 < 31, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

17 25 13 31 2

c. Namun belum berhenti di sini, masih ada elemen yang belum dibandingkan dengan 13
yaitu elemen pertama dan kedua. Sekarang bandingkan 13 dengan 25.

0 1 2 3 4
17 25 13 31 2

d. Hasil perbandingan menunjukkan 13 < 25, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

17 13 25 31 2

e. Sekarang bandingkan 13 dengan 17.

0 1 2 3 4
17 13 25 31 2

f. Hasil perbandingan menunjukkan 13 < 17, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

13 17 25 31 2

g. Karena tidak ada lagi data di sebelah kiri 13 saat ini, atau karena 13 berada pada index
paling pertama maka 13 tidak dibandingkan lagi dengan nilai di sebelah kirinya.

81
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

4) Iterasi keempat
a. Pada iterasi kedua posisi terakhir adalah pada elemen ke-3 atau indeks ke-2. Maka dari
itu sekarang kita bandingkan nila elem ke-4 dengan elemen ke-5 yaitu 31 dan 2.

0 1 2 3 4
13 17 25 31 2

b. Hasil perbandingan menunjukkan 2 < 31, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

13 17 25 2 31

c. Selanjutnya bandingkan 2 dengan 25

0 1 2 3 4
13 17 25 2 31

d. Hasil perbandingan menunjukkan 2 < 25, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

13 17 2 25 31

e. Selanjutnya bandingkan 2 dengan 17

0 1 2 3 4
13 17 2 25 31

f. Hasil perbandingan menunjukkan 2 < 17, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

13 2 17 25 31

g. Selanjutnya bandingkan 2 dengan 13

82
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

0 1 2 3 4
13 2 17 25 31

h. Hasil perbandingan menunjukkan 2 < 13, maka kita tukar posisi keduanya sehingga
posisi data saat ini adalah sebagai berikut:

0 1 2 3 4

2 13 17 25 31

i. Karena sudah tidak ada lagi nilai yang perlu dibandingkan maka proses sorting berhenti
dan menghasilkan urutan data yang telah terurut sebagai berikut:

0 1 2 3 4
2 13 17 25 31

Algoritma Insertion Sort:


1. Mulai.
2. Tentukan banyaknya data (n).
3. Inisialisasi nilai i=1.
4. Selama i < n, lanjut ke langkah 4.1, jika tidak
lompat ke langkah 5.
4.1. Simpan data index ke-i ke dalam variabel
temporary.
4.2. Inisialisasi nilai j=i-1.
4.3. Jika nilai j>=0 dan data index ke-j > dari data
index ke-i lakukan langkah a, jika tidak,
langsung lompat ke langkah 4.4.
a. Pindahkan data indeks ke-j ke indeks j+1.
b. j=j-1.
c. Kembali ke langkah 4.3.
4.4. Pindahkan data dari variabel temporary ke indeks
j+1.
4.5. i++.
4.6. lanjut ke langkah 4.
5. Selesai

83
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

2. Bubble Sort
Bubble Sort adalah algoritma pengurutan paling sederhana yang bekerja dengan berulang
kali menukar elemen yang berdekatan jika urutannya salah. Pada teknik ini kita membandingkan
elemen yang berdekatan, dan cek apakah posisinya salah. Jika posisinya salah maka lakukan
pertukaran posisi data.
Katakanlah kita memiliki array dengan panjang ’n’. Untuk mengurutkan data dalam array,
kita lakukan proses pertukaran untuk n-1 indeks. Sederhananya, data ke indeks ke-i yang lebih besar
akan bergeser ke indeks sebelah kanan (lebih besar), dan data pada indeks yang posisinya diambil
berpindah ke sebalah kiri. Kemudian data yang lebih besar tadi dibandingkan lagi dengan data
sebelah kanannya jika posisinya salah maka ditukar lagi. Begitu seterusnya hingga semua data
terurut dengan benar.
Agar dapat lebih mudah dipahami berikut contoh sorting menggunakan insertion sort.
Dimisalkan terdapat data dalam array sebagai berikut :

0 1 2 3 4
25 17 31 13 2

1) Iterasi 1
a. Pertama kita bandingkan elemen pertama dan ke-2 yakni 25 dan 17.

0 1 2 3 4
25 17 31 13 2

b. Karena 17<25, maka tukarkan posisinya.

0 1 2 3 4

17 25 31 13 2

c. Kemudian kita proses elemen ke-2 dan ke-3 yakni 25 dengan 31.

0 1 2 3 4
17 25 31 13 2

d. Karena 25<31 artinya posisi sudah benar maka tidak terjadi pertukaran. Data berada
padaposisi tetap

0 1 2 3 4
17 25 31 13 2

84
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

e. Selanjutnya membandingkan elemen ke-3 dan ke-4, yakni 31 dan 13

0 1 2 3 4
17 25 31 13 2

f. Karena 13<31, maka lakukan pertukaran posisi

0 1 2 3 4

17 25 13 31 2

g. Kemudian bandingkan elemen ke-4 dan ke-5 yakni 31 dan 2

0 1 2 3 4
17 25 13 31 2

h. Karena 2<31 maka tukar posisinya

0 1 2 3 4

17 25 13 2 31

i. Sampai disni posisi 31 sudah tetap, lanjut ke iterasi kedua

0 1 2 3 4
17 25 13 2 31

2) Iterasi kedua
a. Bandingkan kembali elemen pertama dan kedua yakni 25 dan 17.

0 1 2 3 4
17 25 13 2 31

b. Karena 17<25 berarti posisi sudah benar, tidak terjadi pertukaran.


c. Bandingkan elemen kedua dan ketiga yakni 25 dan 13

0 1 2 3 4
17 25 13 2 31

d. Karena 13<25 maka tukar posisinya

85
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

0 1 2 3 4

17 13 25 2 31

e. Selnajutnya bandingkan elemen ke-3 dan ke-4, yakni 25 dan 2

0 1 2 3 4
17 13 25 2 31

f. Karena 2<25, maka tukarkan posisinya

0 1 2 3 4

17 13 2 25 31

g. Sampai disni posisi 25 sudah tetap, lanjut ke iterasi ketiga

0 1 2 3 4
17 13 2 25 31

3) Iterasi ketiga
a. Bandingkan kembali elemen pertama dan kedua yakni 17 dan 13.

0 1 2 3 4
17 13 2 25 31

b. Karena 13<17, maka lakukan pertukaran

0 1 2 3 4

13 17 2 25 31

c. Kemudian bandingkan lagi elemen ke-2 dan ke-3 yakni 17 dan 2.

0 1 2 3 4
13 17 2 25 31

d. Karena 2<17, maka tukar posisi

86
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

0 1 2 3 4

13 2 17 25 31

e. Sampai disni posisi 25 sudah tetap, lanjut ke iterasi keempat

0 1 2 3 4
13 2 17 25 31

4) Iterasi keempat
a. Bandingkan kembali elemen pertama dan kedua yakni 17 dan 13.

0 1 2 3 4
13 2 17 25 31

b. Karena 2<13 maka tukar posisinya

0 1 2 3 4

2 13 17 25 31

c. Sampai disni posisi 13 dan 2 sudah tetap, proses dihentikan

0 1 2 3 4
2 13 17 25 31

Algoritma Bubble Sort:


1. Mulai.
2. Tentukan banyaknya data (n).
3. Inisialisasi nilai i=0.
4. Jika i < (n-1)lakukan langkah 4.1, jika tidak lompat
ke langkah 5.
4.1. Inisialisasi nilai j=0.
4.2. Jika j < (n-i-1)lanjut ke langkah a, jika tidak
maka lanjut ke langkah 4.3.

87
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

a. Jika data indeks ke-j > dari data indeks ke-


(j+1), tukarkan datanya. Selain itu jangan
tukarkan.
b. j++.
c. Kembali ke langkah 4.2.
4.3. i++.
4.4. Lanjut ke langkah 4.
5. Selesai

3. Merge Sort
Merge sort merupakan teknik penyortiran yang didasarkan pada pemisahan list/array
menjadi 2 buah list dengan ukuran yang sebanding. Hasil pembagian kedua list kemudian dibagi
kembali menjadi 2 bagian hingga elemen terkecilnya. Setleah elemn terkecilnya ditemukan maka
elemen tersebut dibandingkan dengan elemen pasangannya sebelumnya, jika posisinya salah maka
dilakukan pertukaran. Setlah dimerge kemudian elemen tersebut dibandingkan kembali dengan
setiap elemen pasangan hasil pecahan diatasnya kembali dan dilakukan penyortiran kembali. Begitu
seterusnya hingga list kembali dimerge menjadi 1 list.
Agar dapat lebih mudah dipahami berikut contoh sorting menggunakan merge sort.
Dimisalkan terdapat data dalam array sebagai berikut :

0 1 2 3 4 5 6
35 24 40 0 6 50 7

1) Divide-iterasi 1
a. Pertama kita membagi array menjadi 2 bagian yang seimbang, sehingga array saat ini
Nampak sebagai berikut:

0 1 2 3 4 5 6
35 24 40 0 6 50 7

2) Divide-iterasi 2
a. Kemudian dengan cara yang sama, setiap list dibagi menjadi dua bagian lagi

0 1 2 3 4 5 6
35 24 40 0 6 50 7

88
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

3) Divide-iterasi 3
a. Kemudian dengan cara yang sama, setiap list dibagi menjadi dua bagian lagi

0 1 2 3 4 5 6
35 24 40 0 6 50 7

4) Merging-iterasi 1
a. Untuk pasangan pertama, bandingkan kedua nilainya. Karena 24<35, maka posisinya
ditukar.

0 1 2 3 4 5 6
24 35 40 0 6 50 7

b. Untuk pasangan kedua, bandingkan kedua nilainya. Karena 0<40, maka posisinya
ditukar.

0 1 2 3 4 5 6
24 35 0 40 6 50 7

c. Untuk pasangan ketiga, bandingkan kedua nilainya. Karena 6<50, maka posisinya tetap.

0 1 2 3 4 5 6
24 35 0 40 6 50 7

d. Untuk pasangan keempat, karena indeks ke-6 tidak memiliki pasangan maka posisinya
tetap.

0 1 2 3 4 5 6
24 35 0 40 6 50 7

e. Setelah proses pembandingan, gabungkan kembali pasangan list tersebut.

0 1 2 3 4 5 6
24 35 0 40 6 50 7

89
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

5) Merging-iterasi 2
a. Setelah dimerging, sekarang saatnya membandingkan kembali setiap elemen
berdasarkan pasangan list sebelumnya. Untuk yang pertama adalah pasangan list 0-1
dan 2-3.
b. Bandingkan indeks-0 dengan indeks-2. 0<24 maka masukkan 0 ke indeks 0 temporary

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0

c. Selanjutnya bandingkan indeks-0 dengan indeks-3. 24<40 maka masukkan 24 ke


indeks-1 temporary.

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24

d. Selanjutnya bandingkan indeks-3 dengan indeks-1. 35<40 maka masukkan 35 ke


indeks-2 temporary.

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24 35

90
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

e. Terakhir untuk pasangan list ini, karena 40 adalah nilai terakhir, masukkan 40 ke indeks-
3 temporary.

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24 35 40

f. Selanjutnya berpindah ke pasangan berikutnya yaitu indeks 4-5 dan 6. Bandingkan


indeks 4 dengan 6. 6<7, maka masukkan 6 ke indeks-4 temporary

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24 35 40 6

g. Sekarang bandingkan indeks-6 dengan indeks-5. 7<50, maka masukkan 7 ke indeks-5


temporary.

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24 35 40 6 7

h. Terakhir untuk pasangan list ini, karena 50 adalah nilai terakhir, masukkan 50 ke indeks-
6 temporary.

0 1 2 3 4 5 6

24 35 0 40 6 50 7

0 1 2 3 4 5 6
0 24 35 40 6 7 50

91
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

i. Sehingga saat ini diperoleh pasangan list dengan urutan sebagai berikut

0 1 2 3 4 5 6
0 24 35 40 6 7 50

6) Merging-iterasi 3
a. Selanjutnya membandingkan setiap nilai dari kedua pasng list tersebut.
b. Dimulai dari indeks-0 dengan indeks-4. Karena 0<6 maka 0 dimasukkan ke indeks-0
temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0

c. Selanjutnya indeks-4 dengan indeks-2. Karena 6<24 maka 6 dimasukkan ke indeks-1


temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6

d. Selanjutnya indeks-1 dengan indeks-5. Karena 7<24 maka 7 dimasukkan ke indeks-2


temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6 7

92
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

e. Selanjutnya indeks-1 dengan indeks-6. Karena 24<50 maka 24 dimasukkan ke indeks-


3 temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6 7 24

f. Selanjutnya indeks-6 dengan indeks-2. Karena 35<50 maka 35 dimasukkan ke indeks-


4 temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6 7 24 35

g. Selanjutnya indeks-6 dengan indeks-2. Karena 40<50 maka 40 dimasukkan ke indeks-


5 temporary.

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6 7 24 35 40

h. Terakhir untuk pasangan list ini, karena 50 adalah nilai terakhir, masukkan 50 ke indeks-
6 temporary

0 1 2 3 4 5 6
0 24 35 40 6 7 50

0 1 2 3 4 5 6
0 6 7 24 35 40 50

93
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

i. Sehingga saat ini diperoleh list dengan urutan sebagai berikut

0 1 2 3 4 5 6
0 6 7 24 35 40 50

Algoritma Merge Sort:


1. Mulai.
2. Tentukan banyaknya panjang array/list
3. Bagi list/array menjadi dua bagian yang seimbang
4. Lakukan langkah 3 hingga semua hasil pembagian list
berisi 1 elemen saja.
5. Untuk setiap elemen, bandingkan nilai elemen dengan
elemen pasangannya sebelumnya. Jika posisinya salah
maka tukar posisi elemen.
6. Gabungkan kembali elemen dengan elemen pasangannya,
7. Lakukan langkah 5 dan 6 hingga beberapa list menjadi
1 list.
8. Selesai

4. Selection Sort
Selection sort merupakan pengembangan dari metode bubble sort dengan mengurangi
jumlah perbandingan dalam prosesnya. Selection sort merupakan metode pengurutan dengan
mencari nilai data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Algoritma selection sort
akan memindai nilai terkecil dari suatu kumpulan data dan jika ada, data tersebut akan diletakkan
pada urutan pertama. Begitu selanjutnya untuk urutan kedua dan seterusnya.
Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu elemen data
dari posisi awal, untuk mencari data paling kecil dengan mencatat posisi indexnya saja, lalu
dilakukan pertukaran hanya sekali pada akhir setiap tahapan.
Algoritma Selection Sort dilakukan untuk menyempurnakan kekurangan dari bubble sort
yang melakukan pertukaran setiap kali perbandingan memenuhi kriterianya.Agar dapat lebih mudah
dipahami berikut contoh sorting menggunakan merge sort. Dimisalkan terdapat data dalam array
sebagai berikut :

0 1 2 3 4
60 20 15 16 10

94
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

1) Iterasi 1
a. Jadikan indeks-0 sebagai nilai pivot

0 1 2 3 4
60 20 15 16 10

60

b. Kemudian kita bandingkan nilai pivot dengan indeks-1 yakni 60 dan 20.

0 1 2 3 4
60 20 15 16 10

60

c. Karena 20<60, maka jadikan 20 sebagai nilai pivot

0 1 2 3 4
60 20 15 16 10

20

d. Selanjutnya bandingkan nilai pivot dengan indeks-2 yakni 20 dan 15.

0 1 2 3 4
60 20 15 16 10

20

e. Karena 15<20, maka jadikan 15 sebagai nilai pivot

0 1 2 3 4
60 20 15 16 10

15

95
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

f. Selanjutnya bandingkan nilai pivot dengan indeks-3 yakni 15 dan 16.

0 1 2 3 4
60 20 15 16 10

15

g. Karena 15<16, maka 15 tetap sebagai nilai pivot.

0 1 2 3 4
60 20 15 16 10

15

h. Selanjutnya bandingkan nilai pivot dengan indeks-4 yakni 15 dan 10.

0 1 2 3 4
60 20 15 16 10

15

i. Karena 10<15 jadikan 10 sebagai nilai pivot.

60 20 15 16 10

10

j. Karena indeks-4 adalah indeks terakhir, sehingga nilai ini dianggap sebagai nilai
terkecil. Tukar elemen indeks-4 dengan elemen indeks-0. Sampai pada tahap ini, elemen
indeks-0 sudah tetap.

0 1 2 3 4

10 20 15 16 60

96
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

2) Iterasi 2
a. Selanjutnya kita mulai kembali pada indeks-1. Jadikan elemen indeks-1 sebagai pivot

0 1 2 3 4
10 20 15 16 60

20

b. Kemudian kita bandingkan nilai pivot dengan indeks-2 yakni 20 dan 15.

0 1 2 3 4
10 20 15 16 60

20

c. Karena 15<20, maka jadikan 15 sebagai nilai pivot

0 1 2 3 4
10 20 15 16 60

15

d. Kemudian kita bandingkan nilai pivot dengan indeks-3 yakni 15 dan 16.

0 1 2 3 4
10 20 15 16 60

15

e. Karena 15<16, maka 15 tetap sebagai nilai pivot

0 1 2 3 4
10 20 15 16 60

15

97
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

f. Kemudian kita bandingkan nilai pivot dengan indeks-4 yakni 15 dan 60.

0 1 2 3 4
10 20 15 16 60

15

g. Karena 15<60, maka 15 dijadikan sebagai nilai pivot

0 1 2 3 4
10 20 15 16 60

15

h. Karena indeks-4 adalah indeks terakhir. Tukar elemen indeks pivot dengan elemen
indeks-1. Sampai pada tahap ini, elemen indeks-1 sudah tetap

0 1 2 3 4

10 15 20 16 60

3) Iterasi 3
a. Sekarang kita mulai kembali dari indeks-2, jadikan elemennya sebagai pivot.

0 1 2 3 4
10 15 20 16 60

20

b. Kemudian kita bandingkan nilai pivot dengan indeks-3 yakni 20 dan 16.

0 1 2 3 4
10 15 20 16 60

20

98
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

c. Karena 16<20, maka 16 dijadikan sebagai nilai pivot

0 1 2 3 4
10 15 20 16 60

16

d. Kemudian kita bandingkan nilai pivot dengan indeks-4 yakni 16 dan 60.

0 1 2 3 4
10 15 20 16 60

16

e. Karena 16<60, maka 16 tetap sebagai nilai pivot

0 1 2 3 4
10 15 20 16 60

16

f. Karena indeks-4 adalah indeks terakhir. Tukar elemen indeks pivot dengan elemen
indeks-2. Sampai pada tahap ini, elemen indeks-2 sudah tetap

0 1 2 3 4

10 15 16 20 60

4) Iterasi 4
a. Sekarang kita mulai kembali dari indeks-3, jadikan elemennya sebagai pivot.

0 1 2 3 4
10 15 16 20 60

20

99
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

b. Kemudian kita bandingkan nilai pivot dengan indeks-4 yakni 20 dan 60.

0 1 2 3 4
10 15 16 20 60

20

c. Karena 20<60, maka 20 tetap sebagai nilai pivot

0 1 2 3 4
10 15 16 20 60

20

d. Karena indeks-4 adalah indeks terakhir. Tukar elemen indeks pivot dengan elemen
indeks-3. Kebetulan pivot adalah nilai pada indeks-3 sehingga tidak perlu ditukar.

0 1 2 3 4

10 15 16 20 60

5) Iterasi 5
a. Karena indeks-4 adalah indeks terakhir maka sampai pada tahap ini, elemen indeks-4
sudah tetap

0 1 2 3 4

10 15 16 20 60

b. Sehingga saat ini kita telah memperoleh list dengan elemen terurut

0 1 2 3 4

10 15 16 20 60

100
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

Algoritma Selection Sort:


1. Mulai.
2. Pada indeks-0, jadikan nilainya sebagai pembanding
lalu bandingkan dengan nilai indeks berikutnya,
3. Jika nilai indeks-0 lebih besar maka jadikan ideks-1
sebgai pembanding. Jika nilai indeks-0 lebih kecil
maka elemen indeks-0 tetap sebagai pembanding.
4. Lakukan Langkah kedua hingga sampai indeks tertinggi,
sehingga diperoleh elemen terkecil
5. Tukarkan posisi elemen terkecil tersebut dengan
elemen pada ideks-0
6. Lakukan Langkah 2 hingga 5 dengan indeks + 1 setiap
siklus pengulangannya.
7. Selesai

B. PRAKTIKUM
Praktikum 5.1. Insertion Sort ASC
1. Buatlah project baru dengan ketentuan berikut
Nama file :“namapanggilanmu”_Praktikum_5_1
Tipe template :Console Application
Ekstensi :.cpp

2. Ketikkan program berikut kemudian screenshot outputnya dan


tempelkan pada bagian yang telah disediakan.

#include <stdlib.h>
#include <iostream>

using namespace std;

//deklarasi member function


void insertionSort(int arr[], int length);
void printArray(int array[], int size);

101
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

// fungsi utama
int main()
{
int array[6] = {5, 1, 6, 2, 4, 3};
// Mmanggil fungsi insertionSort() untuk mengurutkan array
insertionSort(array, 6);
return 0;
}

void insertionSort(int arr[], int length)


{
int i, j, key;
for (i = 1; i < length; i++)
{
key = arr[i];
j = i-1;

while (j >= 0 && arr[j] >key)


{
arr[j+1] = arr[j];
j--;
}
arr[j +1] = key;

}
cout << "Array yang telah diurutkan: ";
// memanggil fungsi untuk menampilkan array yang telah
diurutkan
printArray(arr, length);
}

// fungsi menampilkan array


void printArray(int array[], int size)
{

102
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

int j;
for (j = 0; j < size; j++)
{
cout <<" "<< array[j];
}
cout << endl;
}

Output:

Tempel screenshot
output di sini

Praktikum 5.2. Insertion Sort DSC


1. Buatlah sebuah empty file baru kemudian simpan dengan format
nama sebagai berikut:
Nama file :“namapanggilanmu”_Praktikum_5_2
Tipe template :Empty File
Ekstensi :.cpp

2. Modifikasi teknik Insertion Sort pada program praktikum 5.1


untuk mengurutkan data dari terbesar ke terkecil.
3. Tuliskan Algoritma dari fungsi sorting yang kalian buat pada
soal no.2 di atas
Jawab:
1.

Tempel kode program Tempel screenshot


di sini output di sini

103
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

2. Algoritma
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………

104
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

Praktikum 5.3. Bubble Sort ASC


1. Buatlah project baru dengan ketentuan berikut
Nama file :“namapanggilanmu”_Praktikum_5_3
Tipe template :Console Application
Ekstensi :.cpp

2. Ketikkan program berikut kemudian screenshot outputnya dan


tempelkan pada bagian yang telah disediakan.

#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int n, i, arr[50], j, temp;
cout<<"Masukkan jumlah elemen :";
cin>>n;
cout<<"Masukkan ke-"<<n<<" angka tersebut:";
for(i=0; i<n; i++)
{
cin>>arr[i];
}
cout<<"Penyortiran array menggunakan bubble sort...\n";
for(i=0; i<(n-1); i++)
{
for(j=0; j<(n-i-1); j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}

105
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

}
cout<<"Elemen berhasil diurutkan..!!\n";
cout<<"elemen diurutkan secara ascending :\n";
for(i=0; i<n; i++)
{
cout<<arr[i]<<" ";
}
getch();
}

Output:

Tempel screenshot
output di sini

Praktikum 5.4. Bubble Sort DSC


1. Buatlah sebuah empty file baru kemudian simpan dengan format
nama sebagai berikut:
Nama file :“namapanggilanmu”_Praktikum_5_4
Tipe template :Empty File
Ekstensi :.cpp

2. Modifikasi teknik Bubble sort program pada praktikum 5.3


untuk mengurutkan data dari terbesar ke terkecil
3. Tuliskan Algoritma dari Teknik sorting Bubble Sort DSC yang
kalian buat yang kalian buat pada soal no.2 di atas

106
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

Jawab:
1.

Tempel kode program Tempel screenshot


di sini output di sini

2. Algoritma
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………

107
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

Praktikum 5.5. Merge Sort


1. Buatlah project baru dengan ketentuan berikut
Nama file :“namapanggilanmu”_Praktikum_5_5
Tipe template :Console Application
Ekstensi :.cpp

2. Ketikkan program berikut kemudian screenshot outputnya dan


tempelkan pada bagian yang telah disediakan.

#include <iostream>

using namespace std;

// Fungsi untuk menggabungkan (merge) 2 list hasil pemecahan


menjada data yang terurut
void Merge(int *a, int low, int high, int mid)
{
// di sini kita mendapatkan indeks terendah hingga tengah
dan tengah+1 hingga tertinggi.
int i, j, k, temp[high-low+1];
i = low;
k = 0;
j = mid + 1;

// menggabungkan 2 bagian ke temp[]


while (i <= mid && j <= high)
{
if (a[i] < a[j])
{
temp[k] = a[i];
k++;
i++;
}
else

108
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

{
temp[k] = a[j];
k++;
j++;
}
}

// memasukkan semua nilai tersisa dari i hingga mid ke


temp[].
while (i <= mid)
{
temp[k] = a[i];
k++;
i++;
}

// memasukkan semua data dari tersisa dari j hingga high


ke temp[].
while (j <= high)
{
temp[k] = a[j];
k++;
j++;
}

// menugaskan data yang tersimpan di temp[] ke a[]


for (i = low; i <= high; i++)
{
a[i] = temp[i-low];
}
}

// Fungsi untuk memecah array menjadi dua bagian


void MergeSort(int *a, int low, int high)

109
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

{
int mid;
if (low < high)
{
mid=(low+high)/2;
// membagi data menjadi dua bagian
MergeSort(a, low, mid);
MergeSort(a, mid+1, high);

// menggabungkan untuk mendapatkan output terurut


Merge(a, low, high, mid);
}
}

int main()
{
int n, i;
cout<<"\nMasukkan jumlah elemen data yang akan diurutkan:
";
cin>>n;

int arr[n];
for(i = 0; i < n; i++)
{
cout<<"Masukkan elemen: "<<i+1<<": ";
cin>>arr[i];
}

MergeSort(arr, 0, n-1);

// menceetak data yang telah diurutkan.


cout<<"\nData terurut ";
for (i = 0; i < n; i++)
cout<<"->"<<arr[i];

110
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

return 0;
}

Output:

Tempel screenshot
output di sini

Praktikum 5.6. Selection Sort


3. Buatlah project baru dengan ketentuan berikut
Nama file :“namapanggilanmu”_Praktikum_5_5
Tipe template :Console Application
Ekstensi :.cpp

4. Ketikkan program berikut kemudian screenshot outputnya dan


tempelkan pada bagian yang telah disediakan.

#include <stdio.h>

int main()
{
int array[100], n, c, d, position, t;

printf("Masukkan banyaknya elemen\n");


scanf("%d", &n);

printf("masukkan %d bilangan integer yang akan diurutkan\n",


n);

for (c = 0; c < n; c++)

111
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

scanf("%d", &array[c]);

for (c = 0; c < (n - 1); c++) // mencari elemen terkecil (n-1)


kali
{
position = c;

for (d = c + 1; d < n; d++)


{
if (array[position] > array[d])
position = d;
}
if (position != c)
{
t = array[c];
array[c] = array[position];
array[position] = t;
}
}

printf("List yang telah diurutkan secara ASC:\n");

for (c = 0; c < n; c++)


printf("%d\n", array[c]);

return 0;
}
Output:

Tempel screenshot
output di sini

112
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

C. LATIHAN
1. Buatlah program dengan teknik Shell Sort
2. Tuliskan algoritma Shell Sort
Jawaban Latihan
1. Shell Sort

Tempel source code Tempel screenshot


di sini output di sini

2. Algoritma
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………

113
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………

114
MODUL STRUKTUR DATA – TEKNIK KOMPUTER – FT UNM-ANDI BASO KASWAR

CATATAN

115

Anda mungkin juga menyukai