Anda di halaman 1dari 11

27 April 2023 – STRUKTUR DATA | PENDIDIKAN KOMPUTER - FKIP ULM

LEMBAR PRAKTIKUM 7: SORTING

I. Identitas Praktikan
NIM : 2210131210025
NAMA : Hendri Yunus Wijaya

II. Tujuan PRAKTIKUM:


● Peserta memahami Konsep Sorting
● Peserta mampu memahami proses Bubble Sort dan Selection Sort
● Peserta mampu mengimplementasikan Operasi Bubble Sort dan Selection Sort
● Peserta mampu mengembangkan dan membuat program python menggunakan
konsep Sorting

III. Aktivitas
Menuliskan semua code yang ada ada di PPT “P7 – Struktur Data”
Catatan : Nilai yang ada di dalam list atau dictionary bebas, dengan syarat kode pada fungsi
sorting harus sama dengan yang ada di PPT

1. Bubble Sort
a. Source Code Bubble Sort
1) Code yang telah dituliskan di laptop anda
2) Penjelasan
3) Tracing table

b. Source Code Bubble Sort List of Dictionary


1) Code yang telah dituliskan di laptop anda
2) Penjelasan

c. Source Code Bubble Sort Dictionary of Dictionaries


1) Code yang telah dituliskan di laptop anda
2) Penjelasan

2. Selection Sort
a. Source Code Selection Sort
1) Code yang telah dituliskan di laptop anda
2) Penjelasan
3) Tracing table
b. Source Code Selection Sort List of Dictionary
1) Code yang telah dituliskan di laptop anda
2) Penjelasan
c. Source Code Selection Sort Dictionary of Dictionaries
1) Code yang telah dituliskan di laptop anda
2) Penjelasan

Contoh Tracing Table:


Tracing table merupakan suatu cara untuk mengetahui proses dari pergerakan kode pada
setiap iterasinya, dengan menuliskan pada table yang terurut.
- Source Code
def bubble(list):
for i in range(len(list)-1,0,-1):
for j in range(0,i,1):
if list[j]>list[j+1]:
temp = list[j+1]
list[j+1] = list[j]
list[j] = temp

angka = [5,3,9,2]

bubble(angka)

2
- Tracing Table
Iterasi angka i J angka[j] angka[j+1] if list[j] > list[j+1] angka
1 [5, 3, 9, 2] 3 0 5 3 True [3, 5, 9, 2]
2 [3, 5, 9, 2] 3 1 5 9 False [3, 5, 9, 2]
3 [3, 5, 9, 2] 3 2 9 2 True [3, 5, 2, 9]
4 [3, 5, 2, 9] 2 0 3 5 False [3, 5, 2, 9]
5 [3, 5, 2, 9] 2 1 5 2 True [3, 2, 5, 9]
6 [3, 2, 5, 9] 1 0 3 2 True [2, 3, 5, 9]

IV. Hasil Praktik


1. Bubble Sort
a. Source Code Bubble Sort
- Source Code

def bubblesort (list):


for i in range (len(list)-1,0,-1):
for j in range (0,i,1):
if list[j] > list[j+1]:
temp = list[j+1]
list[j+1] = list[j]
list[j] = temp

angka =[2,4,3,1,6,5]
print(angka)
bubblesort(angka)
print(angka)

- Penjelasan

 def bubblesort(list): - Membuat fungsi bubblesort dengan satu parameter


masukan list yang akan diurutkan.

 for i in range(len(list)-1,0,-1): - Melakukan perulangan dari len(list)-1 hingga


1 dengan update -1, yang mengindikasikan jumlah iterasi berkurang seiring

3
waktu. Tujuan dari perulangan ini adalah untuk memproses setiap elemen di
list.

 for j in range(0,i,1): - Melakukan perulangan dari 0 hingga i-1 dengan update


1. Tujuan dari perulangan ini adalah untuk membandingkan setiap pasangan
elemen yang bersebelahan dalam list.

 if list[j] > list[j+1]: - Memeriksa apakah elemen ke-j lebih besar dari elemen
ke-j+1 dalam list. Jika ya, maka elemen ke-j dan elemen ke-j+1 akan ditukar
agar elemen yang lebih besar berada di belakang.

 temp = list[j+1] - Menyimpan nilai elemen ke-j+1 ke dalam variabel temp


sementara.

 list[j+1] = list[j] - Menyalin nilai elemen ke-j ke dalam elemen ke-j+1.

 list[j] = temp - Menyalin nilai temp ke dalam elemen ke-j.

 angka = [2,4,3,1,6,5] - Membuat list dengan nama angka yang belum


diurutkan.

 print(angka) - Mencetak nilai angka yang belum diurutkan.


 bubblesort(angka) - Memanggil fungsi bubblesort dengan parameter
masukan angka untuk mengurutkan angka.

 print(angka) - Mencetak nilai angka yang sudah diurutkan menggunakan


algoritma bubblesort.
- Tracing Table
Iterasi angka i J angka[j] angka[j+1] if list[j] > list[j+1] angka
1 [2,4,3,1,6,5] 5 0 2 4 False [2,4,3,1,6,5]
2 [2,4,3,1,6,5] 5 1 4 3 True [2,3,4,1,6,5]
3 [2,3,4,1,6,5] 5 2 4 1 True [2,3,1,4,6,5]
4 [2,3,1,4,6,5] 5 3 4 6 False [2,3,1,4,6,5]
5 [2,3,1,4,6,5] 5 4 6 5 True [2,3,1,4,5,6]
6 [2,3,1,4,5,6] 4 0 2 3 False [2,3,1,4,5,6]
7 [2,3,1,4,5,6] 4 1 3 1 True [2,1,3,4,5,6]
8 [2,1,3,4,5,6] 4 2 3 4 False [2,1,3,4,5,6]
9 [2,1,3,4,5,6] 4 3 4 5 False [2,1,3,4,5,6]
10 [2,1,3,4,5,6] 3 0 1 2 True [1,2,3,4,5,6]
11 [1,2,3,4,5,6] 3 1 2 3 False [1,2,3,4,5,6]
12 [1,2,3,4,5,6] 3 2 3 4 False [1,2,3,4,5,6]

4
13 [1,2,3,4,5,6] 2 0 1 2 False [1,2,3,4,5,6]
14 [1,2,3,4,5,6] 2 1 2 3 False [1,2,3,4,5,6]
15 [1,2,3,4,5,6] 1 0 1 2 False [1,2,3,4,5,6]

b. Source Code Bubble Sort List of Dictionary


- Source Code

def bubleshortlod (list,index):


for i in range (len(list)-1,0,-1):
for j in range (0,i,1):
if list[j][index] > list[j+1][index]:
temp = list[j+1]
list[j+1] = list[j]
list[j] = temp

mahasiswa = [{"nama" : "salman", "nim" : 1234598, "uas" : 100},


{"nama" : "ilmi", "nim" : 1234509, "uas" : 80},
{"nama" : "ifin", "nim" : 12345123, "uas" : 60},
{"nama" : "hendri", "nim" : 234567, "uas" : 90},
]

print(mahasiswa)
bubleshortlod(mahasiswa,"uas")
print("Hasil nilai uas dari nilai terendah sampai ke yang
tertinggi :")
for i in mahasiswa:
print(i)

- Penjelasan

 Fungsi bubleshortlod() menerima 2 parameter yaitu list dan index. List


tersebut merupakan list of dictionary (lod) yang akan diurutkan dan index
merupakan key dari dictionary yang akan dijadikan patokan untuk
mengurutkan list tersebut.

 Algoritma bubble sort yang digunakan pada fungsi ini bekerja dengan cara
membandingkan elemen-elemen bersebelahan dalam list dan menukar posisi
jika elemen yang di sebelah kiri lebih besar dari elemen yang di sebelah
kanan. Pengurutan dilakukan secara descending (nilai tertinggi ke nilai

5
terendah) karena pada bagian if list[j][index] > list[j+1][index]: terdapat
tanda '>', sehingga jika ingin diurutkan secara ascending (nilai terendah ke
nilai tertinggi) bisa diganti dengan '<'.

 Pada bagian utama kode, sebuah list of dictionary dengan nama mahasiswa
didefinisikan sebagai variabel. Kemudian list tersebut di-print. Setelah itu,
fungsi bubleshortlod() dipanggil dengan parameter mahasiswa dan "uas"
sebagai key dari dictionary yang akan dijadikan patokan untuk mengurutkan
list tersebut. Kemudian, list yang sudah diurutkan akan di-print kembali
menggunakan perulangan for dan ditampilkan dalam bentuk key dan nilai
dari setiap dictionary dalam list.
c. Source Code Bubble Sort Dictionary of Dictionaries
- Source Code

def bublesortdod (a,key):


for i in range (len(a)-1,0,-1):
for j in range (0,i,1):
if a[j][key] > a[j+1][key]:
temp = a[j+1]
a[j+1] = a[j]
a[j] = temp

mahasiswa1 = {0 :{"nama" : "salman", "nim" : 1234598, "uas" :


100},
1 :{"nama" : "ilmi", "nim" : 1234509, "uas" : 80},
2 :{"nama" : "ifin", "nim" : 12345123, "uas" : 60},
3 :{"nama" : "hendri", "nim" : 234567, "uas" : 90},
}
bublesortdod(mahasiswa1,"uas")
for i in mahasiswa1:
print(mahasiswa1[i])

- Penjelasan

 pertama saya Membuat sebuah fungsi bernama bublesortdod dengan


parameter a yang merupakan sebuah dictionary yang berisi dictionary dan
key yang merupakan kunci untuk melakukan pengurutan.

 selanjutnya Melakukan iterasi dari len(a)-1 hingga 0 dengan selisih -1,


dimulai dari indeks terakhir hingga indeks pertama.

6
 selanjutnya Melakukan iterasi dari 0 hingga i-1 dengan selisih 1, dimulai dari
indeks pertama hingga indeks ke-i.

 kemudian Memeriksa apakah nilai dari kunci key pada dictionary ke-j lebih
besar dari nilai kunci key pada dictionary ke-j+1. Jika ya, maka akan dilakukan
pertukaran nilai antara dictionary ke-j dengan ke-j+1.

 selanjutnya Menyimpan dictionary pada indeks ke-j+1 sementara dalam


variabel temp. Kemudian, nilai pada indeks ke-j+1 diubah menjadi nilai pada
indeks ke-j. Selanjutnya, nilai pada indeks ke-j diubah menjadi nilai sementara
pada variabel temp. Hal ini dilakukan untuk menukar posisi dua dictionary
yang akan diurutkan.

 selanjutnya Membuat sebuah dictionary bernama mahasiswa1 yang berisi


data mahasiswa dengan tiga kunci yaitu nama, nim, dan uas.

 selanjutnya Memanggil fungsi bublesortdod dengan parameter mahasiswa1


sebagai list yang akan diurutkan, dan "uas" sebagai kunci untuk mengurutkan
list tersebut.

 terakhir Melakukan iterasi pada setiap elemen pada mahasiswa1 dan


menampilkan data mahasiswa dalam bentuk dictionary pada setiap iterasi.
Hal ini dilakukan untuk mengecek apakah list mahasiswa1 telah diurutkan
sesuai dengan kunci uas atau belum.
2. Selection Sort
a. Source Code Selection Sort
- Source Code

def selection (data):


for a in range(len(data)-1,0,-1):
indmax = 0
for b in range (1,a+1):
temp = data[indmax]
if temp < data[b]:
indmax = b
data[indmax],data[a]= data[a],data[indmax]

#mengurutkan list a
a = [3,4,1,6,2]
selection(a)
print(a)

7
- Penjelasan

 pertama saya Membuat sebuah fungsi dengan nama selection yang menerima
sebuah argumen data yang berupa list atau array.

 selanjutnya melakukan perulangan a mulai dari indeks terakhir dari list data
(len(data)-1) sampai indeks pertama (0) dengan langkah mundur (-1).

 kemudian Menginisialisasi variabel indmax dengan nilai 0. Variabel ini akan


digunakan untuk menyimpan indeks elemen maksimum pada setiap iterasi.

 selanjutnya melakukan perulangan b mulai dari indeks kedua (1) hingga


indeks a+1. Variabel ini digunakan untuk mencari elemen maksimum pada
setiap iterasi.

 selanjutnya Menyimpan nilai elemen maksimum pada variabel temp.

 kemudian melakukan perkondisian Jika nilai pada indeks b lebih besar dari
nilai pada indeks indmax, maka variabel indmax akan diupdate dengan nilai b.

 selanjutnya Menukar nilai elemen pada indeks indmax dengan elemen pada
indeks a

 terakhir Mendefinisikan sebuah list a dan memanggil fungsi selection dengan


argumen a. Setelah fungsi selection selesai dijalankan, list a akan berisi
elemen-elemen yang sudah terurut, dan kemudian list a akan dicetak ke layar
menggunakan fungsi print
- Tracing Table
Iterasi A a b indmax temp if temp < data[b] angka
1 [3, 2, 1, 6, 4] 4 1 1 3 True [3, 2, 1, 6, 4]
2 [3, 2, 1, 4, 6] 3 2 2 2 True [3, 2, 1, 4, 6]
3 [1, 2, 3, 4, 6] 2 1 2 2 False [1, 2, 3, 4, 6]
4 [1, 2, 3, 4, 6] 1 0 2 1 False [1, 2, 3, 4, 6]

b. Source Code Selection Sort List of Dictionary


- Source Code

def selectionshortlod (a,index):


for i in range(len(a)-1,0,-1):
indMax = 0
for b in range (1,i+1):
temp = a[indMax][index]
if temp > a[b][index]:
indMax = b
temp1 = a[indMax]

8
a[indMax] = a[i]
a[i] = temp1

mahasiswa2 = [{"nama" : "salman", "nim" : 1234598, "uas" : 100},


{"nama" : "ilmi", "nim" : 1234509, "uas" : 80},
{"nama" : "ifin", "nim" : 12345123, "uas" : 60},
{"nama" : "hendri", "nim" : 234567, "uas" : 90},
]

print(mahasiswa2)
selectionshortlod(mahasiswa2,"uas")
print("Hasil nilai uas dari nilai tertinggi sampai ke yang
terendah :")
for i in mahasiswa2:
print(i)

- Penjelasan

 def selectionshortlod(a, index): adalah pendefinisian fungsi selectionshortlod


yang menerima dua parameter, yaitu a dan index.

 for i in range(len(a)-1, 0, -1): adalah sebuah loop yang akan mengiterasi


indeks dari len(a)-1 sampai 1, dengan langkah -1, dimulai dari indeks terakhir
menuju indeks pertama.

 indMax = 0 adalah inisialisasi variabel indMax dengan nilai 0.


 for b in range(1, i+1): adalah sebuah loop yang akan mengiterasi indeks dari 1
sampai i+1.

 temp = a[indMax][index] adalah sebuah pernyataan yang menyimpan nilai


dari elemen a[indMax][index] pada variabel temp.

 if temp > a[b][index]: adalah sebuah kondisi yang akan membandingkan nilai
dari temp dengan nilai dari a[b][index]. Jika temp lebih besar dari a[b][index],
maka indMax akan diatur ke b.

 temp1 = a[indMax] adalah sebuah pernyataan yang menyimpan elemen


dengan indeks indMax pada variabel temp1.

 a[indMax] = a[i] adalah sebuah pernyataan yang menukar elemen a[indMax]


dengan elemen a[i].

9
 a[i] = temp1 adalah sebuah pernyataan yang menyimpan elemen temp1 pada
a[i].

 mahasiswa2 = [{"nama" : "salman", "nim" : 1234598, "uas" : 100}, ...] adalah


sebuah list of dictionary mahasiswa2 yang berisi data mahasiswa, yaitu nama,
NIM, dan nilai UAS.

 print(mahasiswa2) adalah pernyataan yang akan mencetak isi dari


mahasiswa2.

 selectionshortlod(mahasiswa2, "uas") adalah pemanggilan fungsi


selectionshortlod dengan argumen mahasiswa2 dan "uas".

 print("Hasil nilai uas dari nilai tertinggi sampai ke yang terendah :") adalah
pernyataan yang akan mencetak teks "Hasil nilai uas dari nilai tertinggi
sampai ke yang terendah :".

 for i in mahasiswa2: adalah sebuah loop yang akan mengiterasi setiap elemen
pada mahasiswa2 dan menyimpannya pada variabel i.

 print(i) adalah pernyataan yang akan mencetak setiap elemen dari


mahasiswa2 yang telah diurutkan berdasarkan nilai UAS dari yang tertinggi
hingga terendah.
c. Source Code Selection Sort Dictionary of Dictionaries
- Source Code

def selectiondod (a,key):


for i in range(len(a)-1,0,-1):
indmax = 0
for b in range (1,i+1):
temp = a[indmax][key]
if temp > a[b][key]:
indmax = b
temp3 = a[indmax]
a[indmax] = a[i]
a[i] = temp3

mahasiswa4 = {0 :{"nama" : "salman", "nim" : 1234598, "uas" :


100},
1 :{"nama" : "ilmi", "nim" : 1234509, "uas" : 80},
2 :{"nama" : "ifin", "nim" : 12345123, "uas" : 60},
3 :{"nama" : "hendri", "nim" : 234567, "uas" : 90},
}

selectiondod(mahasiswa4,"uas")
for i in mahasiswa4:
print(mahasiswa4[i])

10
- Penjelasan

 Mendefinisikan sebuah fungsi bernama selectiondod dengan dua parameter,


yaitu a dan key.

 Menginisialisasi sebuah loop for yang akan berjalan sebanyak len(a)-1 kali,
dimulai dari len(a)-1 dan berakhir pada 0, dengan penurunan nilai sebesar 1
setiap iterasinya. Nilai i akan merepresentasikan indeks yang akan digunakan
sebagai posisi akhir dari setiap iterasi.

 Menginisialisasi sebuah variabel indmax dengan nilai 0. Variabel ini akan


merepresentasikan indeks nilai maksimum yang akan digunakan pada setiap
iterasi.

 Menginisialisasi sebuah loop for yang akan berjalan sebanyak i kali, dimulai
dari 1 dan berakhir pada i. Nilai b akan merepresentasikan indeks yang akan
digunakan untuk membandingkan nilai pada setiap iterasi.

 Membandingkan nilai pada indeks indmax dengan nilai pada indeks b pada a
dengan menggunakan kunci key. Jika nilai pada indeks indmax lebih besar
dari nilai pada indeks b, maka nilai indmax akan diperbarui dengan nilai b.

 Menukar nilai pada indeks indmax dengan nilai pada indeks i pada a.

 Mendefinisikan sebuah variabel mahasiswa4 yang berisi data mahasiswa


dalam bentuk kamus. Setiap mahasiswa direpresentasikan dengan sebuah
kamus yang memiliki kunci nama, nim, dan uas.

 Memanggil fungsi selectiondod dengan argumen mahasiswa4 dan "uas".


Fungsi ini akan mengurutkan data mahasiswa berdasarkan nilai UAS (kunci
"uas") dari yang terbesar ke yang terkecil.

 Menginisialisasi sebuah loop for yang akan mengekstrak setiap data


mahasiswa dari kamus mahasiswa4 dan mencetaknya ke layar. Setiap data
mahasiswa akan dicetak

11

Anda mungkin juga menyukai