2. Buatlah program sorting dengan menggunakan metode bubble sort secara ascending dan
descending, dengan data diambil dari:
a) Tanggal Lahir
b) Bulan Lahir
c) NPM (contoh: 19)
d) Jam pembuatan program (contoh 17:12, maka yang diambil cukup 17)
e) Tanggal pembuatan program
#Tanggal Lahir = 19
#Bulan Lahir = 10
#NPM = 39
#Jam Pembuatan Program = 11.03
#Tanggal Pembuatan Program = 11
DaftarAngka=[19,10,39,11,11]
print("Metode Bubble Sort Secara Ascending")
print("Angka sebelum diurutkan :",DaftarAngka)
BubbleSort(DaftarAngka)
print("Angka sesudah diurutkan",DaftarAngka)
def BubbleSort(data):
for j in range(len(data)-1,0,-1):
for i in range (j):
if data[i]<data[i+1]:
data[i], data[i+1]=data[i+1],data[i]
#Tanggal Lahir = 19
#Bulan Lahir = 10
#NPM = 39
#Jam Pembuatan Program = 11.03
#Tanggal Pembuatan Program = 11
DaftarAngka=[19,10,39,11,11]
print("Metode Bubble Sort Secara Descending")
print("Angka sebelum diurutkan :",DaftarAngka)
BubbleSort(DaftarAngka)
print("Angka sesudah diurutkan",DaftarAngka)
G1A022039
Printscreen Output:
G1A022039
Algoritma Bubble Sort dilakukan dengan cara membandingkan dua angka secara
berpasangan dan menukar posisi jika angka pertama lebih besar (atau lebih kecil,
tergantung pada mode pengurutan) dari angka kedua. Variabel j diinisialisasi dengan nilai
len(data)-1, yang merepresentasikan indeks elemen terakhir dari list, dan nilai decrement
1 digunakan untuk mengatur range iterasi untuk algoritma Bubble Sort. Variabel i
merepresentasikan indeks elemen saat ini yang sedang dibandingkan dengan elemen
berikutnya di list. Pada bagian if statement, jika elemen ke-i lebih besar (atau lebih kecil,
tergantung pada mode pengurutan) dari elemen berikutnya, maka posisi dua elemen
tersebut ditukar menggunakan teknik swapping dengan sintaksis data[i], data[i+1] =
data[i+1], data[i]. Pada bagian akhir program, list DaftarAngka diinisialisasi dengan
beberapa angka dan diurutkan menggunakan algoritma Bubble Sort.
G1A022039
G1A022039
Source Code:
def selection_sort(buah):
iterasi = 0
for i in range(len(buah)-1):
min_indx = i
for j in range(len(buah)-1,i,-1):
if(buah[j]<buah[min_indx]):
min_indx=j
if(min_indx != i):
buah[i], buah[min_indx] = buah[min_indx], buah[i]
iterasi += 1
print("iterasi ke :",iterasi,buah)
G1A022039
Deva Marlina 9 G1A022039
Printscreen Output:
G1A022039
print("Metode Ascending")
Angka = [24,3,19,5,2,25]
selection_sort(Angka)
print("Data setelah di urutkan: ",(Angka))
def selection_sort(Angka):
iterasi = 0
for i in range(len(Angka) - 1):
min_indx = i
for j in range(len(Angka)-1,i,-1):
if(Angka[j] > Angka[min_indx]):
min_indx = j
if(min_indx != i):
Angka[i], Angka[min_indx] = Angka[min_indx], Angka[i]
iterasi += 1
print ("langkah ke-", iterasi, Angka)
print("Metode Descending")
Angka = [24,3,19,5,2,25]
selection_sort(Angka)
print("Data setelah di urutkan: ",(Angka))
G1A022039
G1A022039
Printscreen Output:
G1A022039
7. Gambarkan proses pengurutan data berikut dengan menggunakan metode selection sort
secara Ascending dengan penjelasan disetiap iterasinya.
a) A = [100,101,50,4,25,13,8]
b) B = [14, 5,15,3,10,18]
Source Code:
#Selection Sort Secara Ascending
def selection_sort(A):
iterasi = 0
for i in range(len(A) - 1):
min_indx = i
for j in range(len(A)-1,i,-1):
if(A[j] > A[min_indx]):
min_indx = j
if(min_indx != i):
def selection_sort(B):
iterasi = 0
for i in range(len(B) - 1):
min_indx = i
for j in range(len(B)-1,i,-1):
if(B[j] > B[min_indx]):
min_indx = j
if(min_indx != i):
B[i], B[min_indx] = B[min_indx], B[i]
iterasi += 1
print ("langkah ke-", iterasi, B)
B = [14, 5,15,3,10,18]
selection_sort(B)
print("Data setelah di urutkan: ",(B))
Printscreen Source Code:
G1A022039
G1A022039
8. Selain bubble sort dan selection sort, ilustrasikanlah salah satu metode sorting lainnya.
Salah satu metode sorting lainnya adalah merge sort. Metode sorting ini
menggunakan pendekatan divide and conquer yang berarti memecah masalah menjadi
submasalah yang lebih kecil, menyelesaikan submasalah secara rekursif, dan
menggabungkan solusi submasalah menjadi solusi untuk masalah asli. Pada merge sort,
data dibagi menjadi dua bagian yang sama besar hingga tidak dapat lagi dibagi.
Kemudian, setiap bagian diurutkan secara terpisah dan digabungkan kembali menjadi
satu kesatuan secara berurutan. Proses penggabungan ini dilakukan dengan
membandingkan elemen terkecil dari setiap bagian dan memasukkannya ke dalam array
sementara. Proses ini berlanjut hingga semua elemen terurut dan digabungkan kembali ke
dalam array asli.
Berikut adalah ilustrasi merge sort dengan array bilangan {38, 27, 43, 3, 9, 82, 10}:
Array dibagi menjadi dua bagian yang sama besar: {38, 27, 43, 3} dan {9, 82, 10}. (1)
Bagian pertama dipecah lagi menjadi dua bagian yang sama besar: {38, 27} dan {43, 3}.
(2) Setiap bagian dipecah lagi menjadi dua bagian yang sama besar: {38} dan {27}, {43}
dan {3}. (3) Setiap bagian diurutkan secara terpisah dan digabungkan kembali menjadi
satu kesatuan: {27, 38} dan {3, 43}. (4) Bagian kedua juga dipecah dan diurutkan seperti
pada langkah 3 dan 4. (5) Setiap bagian dipecah lagi menjadi dua bagian yang sama
besar: {9, 82} dan {10}. (6) Setiap bagian diurutkan secara terpisah dan digabungkan
kembali menjadi satu kesatuan: {9, 10, 82}. (7) Setiap bagian dari bagian pertama dan
kedua digabungkan kembali secara berurutan menjadi satu kesatuan: {3, 27, 38, 43} dan
{9, 10, 82}. (8) Setiap bagian dari kedua bagian yang diurutkan digabungkan kembali
secara berurut.