STRUKTUR DATA
Pertemuan ke-5
Disusun oleh
BAB I
PENDAHULUAN
A. TUJUAN
Mahasiswa dapat melakukan pengurutan terhadap suatu data yang terdapat di
dalam larik
BAB II
PENJELASAN
B. DASAR TEORI
Sorting (Pengurutan)
Sorting (pengurutan) merupakan konsep/ algoritma yang sering
digunakan. Jika berhubungan dengan jumlah data yang besar, data akan mudah
dikelola jika sudah terurut. Algoritma pengurutan melibatkan beberapa konsep-
konsep dasar pemograman, yaitu:
• Urutan/Sequence. Kaidah pemrograman yang menyatakan bahwa
perintahperintah dalam program komputer akan dieksekusi menurut
urutannya dari atas ke bawah
• Seleksi/Selection. Perintah-perintah dalam program komputer akan
dieksekusi berdasarkan nilai kebenaran boolean tertentu.
• Perulangan/Loop. Sejumlah perintah dalam program komputer yang akan
dieksekusi beberapa kali berdasarkan nilai kebenaran boolean-nya
Sorting dapat dibuat dengan dua model, yatu Ascending dan Descending.
Ascending yaitu melakukan pengurutan dari data yang terkecil ke data yang lebih
besar. Contoh : 1, 2, 3, . . . ,10.
Descending yaitu melakukan pengurutan dari data yang terbesar ke data yang
lebih kecil. Contoh: 10, 9, 8, . . . , 1.
Ada beberapa metode sorting, misalnya :
• Bubble Sort
• Selection Sort
• Insertion Sort
• Quick Sort
• MergeSort
• dan lainnya
Pada praktikum ini kita akan mempelajari teknik sorting bubble sort,
selection Sort dan Insertion Sort
C. PRAKTIK
Praktek 1
//mengurutkanDataBubble
mengurutkanDataBubble(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
}
}
Penjelasan:
Algoritma bubble sort akan membandingkan sebuah elemen dengan
elemen di sebelah kanannya. Jika elemen yang dibaca lebih besar dari elemen di
sebelah kanannya maka kedua elemen tersebut harus ditukar (untuk kasus
Ascending). Proses ”banding-tukar” ini akan dilakukan mulai dari elemen pertama
(data paling kiri) hingga elemen terakhir (data paling kanan) sebagai satu buah
siklus. Pada akhir siklus yang pertama akan diperoleh hasil berupa kondisi di
mana data yang paling besar berada di posisi paling kanan.
Pada siklus berikutnya, proses ”banding-tukar” akan dilakukan lakukan
lagi untuk mendapatkan data terbesar kedua untuk diletakkan di posisi kedua dari
kanan. Kemudian siklus akan diulang kembali untuk ketiga kalinya, keempat
kalinya, kelima kalinya demikian seterusnya hingga diperoleh data terbesar
ketiga, keempat, kelima, dan seterusnya. Keberlangsungan siklus baru akan
berhenti apabila seluruh data terurutkan.
Dalam program diatas fungsi algoritma bubblesort ada di baris ke 86 s/d
101. Hasil output program diatas akan seperti berikut
Output
Penjelasan output :
Dalam output tersebut, ketika kita
selesai memasukkan/input
nama,alamat,umur,jekel dan IPK
tampilan selanjutnya muncul
tampilan pencarian biner kata kunci
mana yang akan dicari, setelah sudah
ketemu, maka muncul fungsi
pengurutan secara bubblesort yang
dimana pengurutan nama dari A-Z.
Praktik 2
Eksekusi master program untuk melakukan pengurutan data secara SelecionSort.
Program
import java.util.Scanner;
class formatBiodata{
//bagian deklarasi struktur record
String nama;
String alamat;
int umur;
char jekel;
float ipk;
}
class praktik2{
public static int N=5;
//bagian entri data ke dalam struktur larik
static void ngentriData(formatBiodata biodataMahasiswa[]){
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
//mengurutkanDataSelection
mengurutkanDataSelection(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
}
}
Penjelasan :
Algoritma selection sort akan membagi larik menjadi dua bagian. Bagian
kiri akan menjadi data yang sudah urut sedangkan bagian kanan adalah bagian
yang masih acak.
Proses pengurutan dilakukan dengan cara mengambil sebuah elemen
kunci, kemudian membandingkan dengan elemen terkecil dari larik bagian kanan.
Jika elemen kunci lebih besar dari elemen terkecil dari larik bagian kanan
tersebut, tukarkan kedua elemen tersebut.
Proses dilanjutkan dengan mengambil sebuah elemen kunci yang baru,
kemudian membandingkan lagi elemen kunci tersebut dengan elemen terkecil
dari larik bagian kanan yang masih tersisa. Jika elemen kunci lebih besar dari
elemen terkecil dari larik bagian kanan tersebut, lakukan kembali pertukarkan
kedua elemen seperti langkah sebelumnya. Proses seperti ini harus diulang terus
menerus hingga larik bagian kiri penuh dan larik bagian kanan habis.
Dalam program praktik 2 ini bagian fungsi algoritma selection sort berada
dibaris ke 86 s/d 115. Untuk output program praktik 2 ini sebagai berikut:
Output
Penjelasan output :
Dalam output tersebut, ketika kita selesai
memasukkan/input
nama,alamat,umur,jekel dan IPK tampilan
selanjutnya muncul tampilan pencarian
biner kata kunci mana yang akan dicari,
setelah sudah ketemu, maka muncul fungsi
pengurutan secara selection sort yang
dimana pengurutan nama dari A-Z.
Praktik 3
Eksekusi master program untuk melakukan pengurutan data secara
InsertionSort.
Program
import java.util.Scanner;
class formatBiodata{
//bagian deklarasi struktur record
String nama;
String alamat;
int umur;
char jekel;
float ipk;
}
class praktik3{
public static int N=5;
//bagian entri data ke dalam struktur larik
static void ngentriData(formatBiodata biodataMahasiswa[]){
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
//mengurutkanDataInsertion
mengurutkanDataInsertion(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
}
}
Penjelasan :
Algoritma Insertion sort akan membagi larik menjadi dua bagian. Bagian
kiri akan menjadi data yang sudah urut sedangkan bagian kanan adalah bagian
yang masih acak.
Proses pengurutan dilakukan dengan cara mengambil sebuah elemen
kunci, kemudian meletakkan di tempat yang sesuai pada bagian kiri larik. Proses
pencarian tempat yang sesuai dilakukan dengan membandingkan elemen kunci
tersebut dengan setiap elemen yang ada di bagian kiri larik, dimulai dari kanan.
Apabila ditemukan tempat yang sesuai maka elemen kunci tersebut akan
disisipkan di lokasi yang dimaksud. Proses dilanjutkan dengan mengambil sebuah
elemen kunci yang baru yang ada di sebelah kanan elemen kunci yang
sebelumnya, kemudian dilakukan kembali proses di atas, hingga semua data pada
bagian kanan larik habis.
Dalam program praktik 3 diatas fungsi dari algoritma Insertion sort ada
dibaris ke 86 s/d 118. Untuk output program praktik 3 ini sebagai berikut:
Output
Penjelasan output:
Dengan menggunakan pengurutan secara
insertion tersebut, data akan diurutkan
berdasarkan abjad mulai dari a-z.
Praktik 4
Sekarang pikirkan, kemudian modifikasilah ketiga program sorting di atas supaya
nama-nama dalam larik menjadi urut turun (descending).
Program
import java.util.Scanner;
class formatBiodata{
//bagian deklarasi struktur record
String nama;
String alamat;
int umur;
char jekel;
float ipk;
}
class praktik4{
public static int N=5;
//bagian entri data ke dalam struktur larik
static void ngentriData(formatBiodata biodataMahasiswa[]){
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
//mengurutkanDataDescBubble
mengurutkanDataDescBubble(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
//mengurutkanDataDescSelection
mengurutkanDataDescSelection(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
//mengurutkanDataDescInsertion
mengurutkanDataDescInsertion(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
}
}
Penjelasan:
Pada praktik 4 ini, kita membahas tentang memodifikasi praktik 1-3 agar nama-
namanya menjadi desceding atau dari abjad dari z-a. Untuk program 4 diatas, saya
menggambungkan algoritma Bubblesort, SelecionSort, dan InsertionSort menjadi
satu dan memodifikasi programnya menjadi desceding. Untuk Bubblesort
program yang diubah yaitu
if (biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[i+1].nama) > 0)
menjadi
if (biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[i+1].nama) < 0)
Untuk algorima SelecionSort
if (biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[lokasi].nama)<0){
menjadi
if (biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[lokasi].nama)>0){
Untuk algoritma InsertionSort
if (biodataMahasiswa[cari].nama.compareTo(biodataSementara.nama)>0)
menjadi
if (biodataMahasiswa[cari].nama.compareTo(biodataSementara.nama)<0)
dan untuk outputnya akan seperti berikut
//mengurutkanDataBubble
mengurutkanDataBubble(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
//mengurutkanDataSelection
mengurutkanDataSelection(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
}
}
Penjelasan:
Untuk program latihan ini, kita menggabungkan antara algoritma Bubblesort dan
SelecionSort di praktik 1 dan 2 namun, mengurutkan datanya berdasarkan nilai
IPK. Program yang diubah antara lain, untuk algoritma Bubblesort
if (biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[i+1].nama) > 0)
Menjadi
if(biodataMahasiswa[i].ipk >= biodataMahasiswa[i+1].ipk){
untuk algoritma SelecionSort
• String teksTerkecil = "";
• teksTerkecil = "zzzzzzz";
• if (biodataMahasiswa[S].nama.compareTo(teksTerkecil)<0){
• teksTerkecil = biodataMahasiswa[S].nama;
• if
(biodataMahasiswa[i].nama.compareTo(biodataMahasiswa[lokasi].nama)>0){
menjadi
• float teksTerkecil;
• teksTerkecil =1111111;
• if(biodataMahasiswa[S].ipk <= teksTerkecil){
• teksTerkecil = biodataMahasiswa[S].ipk;
• if(biodataMahasiswa[i].ipk >= biodataMahasiswa[lokasi].ipk)
Program
import java.util.Scanner;
class menu{
String nama;
int noMhs;
String alamat;
float ipk;
}
class tugas{
public static int N=10, pilih;
public static void input(menu formpilihan[]){
Scanner input = new Scanner(System.in);
for(int i=0; i<=N-1; i++){
System.out.println("Silahkan isi data anda");
System.out.print("Masukan Nama : ");
formpilihan[i].nama = input.next();
System.out.print("Masukan No Mahasiswa : ");
formpilihan[i].noMhs = input.nextInt();
System.out.print("Masukan Alamat : ");
formpilihan[i].alamat = input.next();
System.out.print("Masukan IPK : ");
formpilihan[i].ipk = input.nextFloat();
System.out.println();
}
}
//----------------Fungsi untuk mengurutkan data(Insertion)------------//
public static void mengurutkanDataInsertion(menu formpilihan[]){
menu formpilihanSementara = new menu();
//untuk menentukan awal dari data sisi kanan(sisi yang masih berantakan)
int awal;
//untuk mencari posisi yang tepat pada sisi kiri(sisi yang sudah berurutan)
int cari;
awal = 1;
while(awal<=N-1){
formpilihanSementara = formpilihan[awal];
cari=awal-1;
//cari akan bergerak dari kanan(awwal-1) ke kiri
while(cari>=0){
//(formpilihan[cari].nama > formpilihanSementara.nama)
if(formpilihan[cari].nama.compareTo(formpilihanSementara.nama)>0){
formpilihan[cari+1] = formpilihan[cari];
formpilihan[cari] = formpilihanSementara;
cari--; //cari digeser kekiri 1 langkah
}else{
formpilihan[cari+1] = formpilihanSementara;
//perintah ini untuk keluar dari loop while
cari=-1;
}
}
awal++;
}
}
public static void tampil(menu formpilihan[]){
System.out.println("----------------------------------------------------");
System.out.println("NAMA\t\tNo Mhs\t\tAlamat\t\tIPK");
System.out.println("----------------------------------------------------");
for(int i=0; i<=N-1; i++){
System.out.print(formpilihan[i].nama+"\t\t");
System.out.print(formpilihan[i].noMhs+"\t");
System.out.print(formpilihan[i].alamat+"\t");
System.out.println(formpilihan[i].ipk+"\t");
}
}
public static void main(String[]args){
int j =0;
Scanner input = new Scanner(System.in);
Output
BAB III
PENUTUP
F. KESIMPULAN
Saya dapat melakukan pengurutan terhadap suatu data yang terdapat di dalam
larik