149 - 153 - 155 - 164 - 166 - Kelompok 7 - UAS Computational Thinking - Implementasi Sorting Dan Graf Menggunakan
149 - 153 - 155 - 164 - 166 - Kelompok 7 - UAS Computational Thinking - Implementasi Sorting Dan Graf Menggunakan
Disusun Oleh :
Lisa Febriyanti 2210512149
M. Varian Warrick 2210512153
Aura Rachmawaty 2210512155
Alvian Nurhaliza Putri 2210512164
Davy Putra Ananda 2210512166
Dosen Pengampu :
Sarika, S.Kom., M.Kom.
DAFTAR ISI.............................................................................................................................. i
DAFTAR GAMBAR................................................................................................................ ii
BAB I PENDAHULUAN......................................................................................................... 1
1.1 Latar Belakang............................................................................................................... 1
1.2 Rumusan Masalah.......................................................................................................... 2
1.3 Tujuan.............................................................................................................................2
BAB II PEMBAHASAN.......................................................................................................... 3
2.1 Deskripsi Project............................................................................................................ 3
2.2 Implementasi Struktur Data........................................................................................... 3
2.2.1 Insertion Sort......................................................................................................... 3
2.2.2 Selection Sort........................................................................................................ 5
2.2.3 Shell Sort............................................................................................................... 6
2.2.4 Merge Sort.............................................................................................................7
2.2.5 Heap Sort...............................................................................................................8
2.2.6 Bubble Sort............................................................................................................8
2.2.7 Graf........................................................................................................................9
2.3 Implementasi Program................................................................................................. 10
2.3.1 Insertion Sort....................................................................................................... 10
2.3.2 Selection Sort...................................................................................................... 12
2.3.3 Shell Sort............................................................................................................. 14
2.3.4 Merge Sort...........................................................................................................16
2.3.5 Heap Sort.............................................................................................................18
2.3.6 Bubble Sort..........................................................................................................21
2.3.7 Graf......................................................................................................................22
BAB III PENUTUP................................................................................................................ 26
3.1 Kesimpulan...................................................................................................................26
3.2 Saran.............................................................................................................................26
DAFTAR PUSTAKA..............................................................................................................28
LAMPIRAN............................................................................................................................ 29
i
DAFTAR GAMBAR
ii
BAB I
PENDAHULUAN
1
1.2 Rumusan Masalah
1. Bagaimana konsep computational thinking dapat diterapkan secara efektif dalam
mengatasi kompleksitas pengolahan data pada era digital yang terus berkembang?
2. Apa peran utama struktur data dan algoritma pengurutan dalam meningkatkan
keefisienan dan keakuratan manipulasi data dalam konteks komputasi modern?
3. Mengapa representasi data dalam bentuk graf menjadi kunci penting dalam
memodelkan hubungan kompleks antara entitas dalam berbagai konteks, dan
bagaimana hal ini dapat mendukung analisis yang mendalam terhadap interaksi
antar elemen?
1.3 Tujuan
1. Menilai sejauh mana konsep computational thinking dapat diterapkan dalam
pengembangan solusi-solusi efektif untuk mengelola, mencari, menyimpan, dan
memproses data dengan kompleksitas yang tinggi.
2. Menganalisis dampak dan peran struktur data serta algoritma pengurutan dalam
meningkatkan kinerja aplikasi pada pengelolaan data, dengan fokus pada efisiensi
dan akurasi manipulasi data.
3. Mengevaluasi keefektifan representasi data dalam bentuk graf sebagai metode
untuk memodelkan hubungan antar entitas, dan bagaimana hal ini dapat
mendukung analisis mendalam terhadap interaksi antar elemen dalam berbagai
konteks pengolahan data.
2
BAB II
PEMBAHASAN
3
Proses Algoritma Insertion Sort:
1. Inisialisasi: Mulai dari indeks ke-1 dalam array. Bagian ini dianggap
sebagai “bagian yang sudah diurutkan”.
4
3. Baris ketiga menunjukkan perbandingan antara elemen saat ini dan
elemen pertama dalam subarray yang diurutkan.
4. Baris keempat menunjukkan pergeseran elemen-elemen dalam
subarray yang diurutkan.
5. Baris kelima menunjukkan penyisipan elemen saat ini ke posisinya
yang benar dalam subarray yang diurutkan.
5
Gambar 2.2.2 Visualisasi Selection Sort
6
● Kurangi nilai jarak menjadi setengah dari nilai sebelumnya.
Langkah selanjutnya, kita mungkin membagi setiap
sub-kelompok menjadi dua lagi: {"Davy"} dan {"Lisa",
"Warik"}. Kemudian kita urutkan lagi.
● Ulangi langkah kedua untuk sub-kelompok yang baru.
● Lakukan ini berulang-ulang sampai jarak menjadi satu.
5. Urutkan Sekali Lagi : Setelah jarak menjadi satu, lakukan pengurutan
sisip lagi pada seluruh daftar nama. Ini akan memastikan bahwa daftar
nama telah diurutkan sepenuhnya.
7
Gambar 2.2.4 Visualisasi Merge Sort
8
data yang berdekatan dan menukar posisinya jika elemen pertama lebih besar
dari elemen kedua. Proses ini dilakukan secara berulang dari elemen pertama
hingga elemen terakhir. Untuk mengimplementasikan struktur data bubble
sort, kita dapat menggunakan sebuah array untuk menyimpan data yang akan
diurutkan.
Proses Algoritma dari Bubble Sort :
1. Inisialisasi. Pertama, kita perlu menginisialisasi
variabel-variabel yang akan digunakan dalam algoritma bubble
sort. Variabel-variabel tersebut biasanya adalah :
● data : Array yang menyimpan data yang akan diurutkan.
● i : Variabel iterasi untuk loop luar.
● j : Variabel iterasi untuk loop dalam.
● temp : Variabel untuk menyimpan data yang akan
ditukar.
2. Perulangan. Proses bubble sort dilakukan dengan dua loop for.
Loop luar digunakan untuk iterasi ke setiap elemen data. Loop
dalam digunakan untuk membandingkan dua elemen data yang
berdekatan. Jika elemen pertama lebih besar dari elemen kedua,
maka kedua elemen tersebut ditukar posisinya.
3. Periksa kondisi. Setelah loop dalam selesai, kita perlu
memeriksa kondisi apakah masih ada pertukaran data yang
terjadi. Jika tidak ada pertukaran data yang terjadi, maka proses
bubble sort sudah selesai.
2.2.7 Graf
Sebuah graf G didefinisikan sebagai pasangan himpunan (V,E) , dengan
V adalah himpunan tak kosong dari simpul-simpul (vertices) pada G.
Sedangkan E adalah himpunan rusuk (edge) pada G yang menghubungkan
sepasang simpul. Himpunan simpul pada G dinotasikan sebagai V, dan
himpunan rusuk pada G dinotasikan sebagai E. Jadi G=(V, E) (Harju, 2012).
V = {A, B, C, D}
E = {(A, B), (B, C), (C, D), (D, A), (A, C)}
9
- Setiap pasangan simpul dalam himpunan E direpresentasikan sebagai
rusuk yang menghubungkan simpul-simpul tersebut.
insertionSort(orangArray);
10
// Pindahkan elemen dari arr[0..i-1] yang lebih besar dari kunci
// ke posisi satu langkah di depan dari posisi sekarang
while (j >= 0 && arr[j].usia > kunci.usia) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = kunci;
}
}
11
● Dalam metode main, array dibuat dari objek Orang dengan beberapa
data uji.
● Mencetak array sebelum diurutkan menggunakan metode cetakArray.
3. Metode insertionSort:
● Metode ini menerima array dari objek Orang sebagai parameter dan
mengurutkannya berdasarkan usia menggunakan algoritma Insertion
Sort.
● Iterasi dilakukan dari elemen kedua hingga elemen terakhir array.
● Selama iterasi, elemen saat ini dibandingkan dengan elemen-elemen
sebelumnya, dan jika usianya lebih kecil, elemen-elemen tersebut
bergeser ke posisi berikutnya untuk memberikan tempat bagi elemen
saat ini.
4. Metode cetakArray:
● Metode ini menerima array dari objek Orang sebagai parameter dan
mencetak nama dan usia setiap objek dalam array.
12
// Output sebelum pengurutan
System.out.println("Sebelum Selection Sort");
for(int i:arr1){
System.out.print(i+" ");
}
System.out.println();
13
● Setelah pengurutan selesai, mencetak array yang sudah diurutkan
(setelah Selection Sort).
arr[j] = temp;
}
gap = gap / 2;
}
}
14
// Metode untuk mencetak array
public static void printArray(String[] arr) {
for (String name : arr) {
System.out.print(name + " ");
}
System.out.println();
}
}
Fungsi Main :
15
● Mencetak daftar nama setelah diurutkan menggunakan metode
printArray.
Dengan menggunakan fungsi-fungsi ini, program melakukan
pengurutan daftar nama menggunakan algoritma Shell Sort dan mencetak
daftar nama sebelum dan sesudah diurutkan. Semua langkah-langkah tersebut
diatur dalam fungsi-fungsi yang tersusun rapi dalam kelas ShellSort.
private static void merge(int[] arr, int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
int[] leftArr = new int[n1];
int[] rightArr = new int[n2];
for (int i = 0; i < n1; ++i) {
leftArr[i] = arr[left + i];
}
for (int j = 0; j < n2; ++j) {
rightArr[j] = arr[mid + 1 + j];
}
int i = 0, j = 0;
int k = left;
16
arr[k] = leftArr[i];
i++;
k++;
}
MergeSort.mergeSort(data);
17
Output Program Merge Sort
Fungsi Main :
● Mencetak array sebelum dilakukan pengurutan menggunakan
algoritma Merge Sort.
● Memanggil fungsi MergeSort dari kelas MergeSort untuk
mengurutkan array yang telah diberikan.
● Setelah proses pengurutan selesai, mencetak array yang sudah
diurutkan menggunakan algoritma Merge Sort.
18
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
// Pembentukan heap
void heapify(int arr[], int n, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
// Periksa apakah anak kiri atau kanan lebih besar dari root
if (left < n && arr[left] > arr[largest])
largest = left;
// Jika largest bukan root, tukar dengan root dan rekursif heapify
sub-pohon yang terpengaruh
if (largest != i) {
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
heapify(arr, n, largest);
}
}
19
System.out.print(arr[i] + " ");
System.out.println();
}
// Program utama
public static void main(String args[]) {
// Array yang akan diurutkan
int arr[] = { 12, 11, 13, 5, 6, 7 };
int n = arr.length;
20
elemen terakhir di array, menjaga sisa array agar tetap
mempertahankan sifat heap.
● Fungsi heapify membentuk dan memelihara sifat heap pada array,
memeriksa nilai elemen anak dan induk dalam sub-pohon. Jika ada
ketidaksesuaian, dilakukan pertukaran dan rekursi pada sub-pohon
untuk memastikan sifat heap terjaga.
● Fungsi printArray: Digunakan untuk mencetak isi array.
Fungsi main:
● Program utama dimulai di sini.
● Mencetak array sebelum pengurutan.
● Membuat objek HeapSort, kemudian melakukan pengurutan array
menggunakan fungsi sort().
● Mencetak array setelah pengurutan.
BubbleSort.bubbleSort(data);
21
}
2.3.7 Graf
Input Program Java Graf
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
22
this.points = points;
setTitle("Graph Example");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
@Override
public void paint(Graphics g) {
super.paint(g);
// Menggambar graf
for (Point point : points) {
drawPoint(g, point);
}
23
}
new Graph(points);
});
}
}
24
● Konstruktor Graph(ArrayList<Point> points) menerima kumpulan
objek Point dan menginisialisasi atribut points. Selain itu, konstruktor
ini mengatur beberapa properti jendela seperti judul, ukuran, dan
lokasi.
● Metode paint(Graphics g) digunakan untuk menggambar grafik di
jendela. Metode ini menggambar titik-titik dan menghubungkannya
dengan garis untuk membentuk segitiga.
● Metode drawPoint(Graphics g, Point point) digunakan untuk
menggambar titik pada koordinat yang diberikan.
Metode main:
● Metode ini merupakan metode utama yang dipanggil saat program
dijalankan.
● Menggunakan SwingUtilities.invokeLater untuk memastikan bahwa
pembuatan GUI dilakukan pada thread AWT event dispatch, yang
disarankan untuk operasi GUI.
● Membuat objek Graph dengan mengirimkan kumpulan objek Point
sebagai argumen konstruktor.
Kelas Point:
● Tidak didefinisikan di dalam potongan kode yang diberikan, tetapi
diasumsikan bahwa ini adalah kelas bawaan Java Point atau kelas
sederhana yang memiliki dua atribut x dan y untuk menyimpan
koordinat titik.
25
BAB III
PENUTUP
3.1 Kesimpulan
Konsep computational thinking memainkan peran kunci dalam pengembangan
solusi-solusi efektif untuk mengelola, mencari, menyimpan, dan memproses data
dengan kompleksitas tinggi. Kemampuan untuk memecahkan masalah, merancang
algoritma, dan berpikir secara logis menjadi landasan penting dalam mengatasi
tantangan pengolahan data yang kompleks. Penerapan struktur data yang tepat dan
algoritma pengurutan yang efisien memberikan dampak positif terhadap kinerja
aplikasi dalam pengelolaan data, dengan fokus pada efisiensi dan akurasi manipulasi
data. Penggunaan representasi data dalam bentuk graf juga terbukti efektif sebagai
metode untuk memodelkan hubungan antar entitas, mendukung analisis mendalam
terhadap interaksi antar elemen dalam berbagai konteks pengolahan data. Oleh karena
itu, pemahaman konsep computational thinking, pilihan struktur data, dan
implementasi algoritma yang cermat merupakan aspek-aspek krusial untuk
menghadapi tantangan kompleks dalam pengolahan data dengan baik dan efisien.
3.2 Saran
Dari hasil implementasi yang telah dilakukan, beberapa saran dapat diajukan
untuk lebih memperbaiki pengelolaan data dan pengembangan solusi yang lebih
efektif.
1. Penting untuk terus mengembangkan keterampilan computational thinking,
seperti kemampuan pemecahan masalah dan pemikiran algoritmik, melalui
pendidikan formal dan pelatihan tambahan.
2. Penelitian dan implementasi algoritma pengurutan serta struktur data yang
efisien perlu diperhatikan secara terus-menerus guna meningkatkan kinerja
aplikasi pada pengelolaan data.
3. Penerapan prinsip-prinsip desain perangkat lunak yang baik, terutama dalam
pemilihan struktur data yang sesuai, dapat memberikan dukungan yang kuat
terhadap efektivitas dan skalabilitas solusi.
4. Penggunaan graf sebagai representasi data dapat lebih ditekankan untuk
mendukung analisis interaksi antar entitas dalam berbagai konteks,
memungkinkan pemahaman yang lebih baik terhadap struktur dan dinamika
data.
26
Dengan demikian, penerapan dan peningkatan pemahaman terhadap
konsep-konsep ini akan menjadi kunci dalam menghadapi kompleksitas pengolahan
data dengan lebih efisien dan akurat.
27
DAFTAR PUSTAKA
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms
(3rd ed.). MIT Press.
Knuth, D. E. (1998). The Art of Computer Programming, Volume 3: Sorting and Searching
(2nd ed.). Addison-Wesley.
Newman, M. (2003). The structure and function of complex networks. SIAM Review, 45(2),
167–256.
Resnick, M. (2017). Lifelong kindergarten: Cultivating creativity through projects, passion,
peers, and play. MIT Press.
Abdullah, M. F., Hafiza, I., Wahyuni, R., & Syahputra, A. (2023). Penggunaan Algoritma
Bubble Sort dalam Pengurutan Nomor Induk Mahasiswa. Hello World Jurnal Ilmu
Komputer, 2(1), 14-19.
Sunandar, E., & Indrianto, I. (2020). Implementasi Algoritma Bubble Sort Terhadap 2 Buah
Model Varian Pengurutan Data Menggunakan Bahasa Program Java.
Marwa, S. (2022). Aplikasi Algoritma Pengurutan Menggunakan Java BlueJ Sebagai Media
Bantu Pembelajaran. Journal of Engineering Science and Technology Management
(JES-TM), 2(2), 124-129.
Retnoningsih, E. (2018). Algoritma Pengurutan Data (Sorting) Dengan Metode Insertion Sort
dan Selection Sort. Information Management For Educators And Professionals:
Journal of Information Management, 3(1), 95-106.
28
LAMPIRAN
29