Sorting (pengurutan) dan searching (pencarian) merupakan konsep/algoritma
yang sering digunakan. Jika berhubungan dengan jumlah data yang besar, data
akan mudah dikelola jika sudah terurut. Algoritma pengurutan pencarian memuat
banyak konsep-konsep dasar pemograman, yaitu:
·
Runtutan/Sequence.
Kaidah pemrograman yang menyatakan bahwa perintah-perintah dalam program
computer 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 computer yang akan dieksekusi
beberapa kali berdasarkan nilai kebenaran boolean-nya.
Sorting dapat
dilakukan dengan dua metode, yatu Ascending dan Descending. Ascending akan
melakukan pengurutan dari data yang terkecil ke data yang lebih besar. Contoh :
1, 2, 3, . . . ,10.
Descending akan melakukan pengurutan
dari data yang terbesar ke data yang lebih kecil. Contoh: 10, 9, 8, . . . , 1.
- Pencarian
Linier (Linear search)
Pencarian Linier adalah metode pencarian
yang membandingkan data kunci (data yang dicari) dengan seluruh data, mulai
dari data pertama.
- Pencarian
Biner (Binary Search)
Pencarian Biner adalah pencarian
terhadap data yang sudah terurut. Data kunci dibandingkan dengan data tengah
(data pivot), jika sama berarti pencarian ditemukan. Jika data kunci lebih
besar dari data tengah maka pecarian akan dilakukan disebelah kanan data tengah
(data diurutkan secara ascending). Jika belum ditemukan maka data pada
sisi pencarian akan dibagi dua kembali, dibandingkan lagi, demikian seterusnya
sampai data ditemukan/tidak ditemukan.
- Bubble
Sort
Algoritma bubble sort akan membandingkan
elemen yang saat ini dibaca dengan elemen yang berikutnya. Jika elemen
yang saat ini dibaca lebih besar dari elemen berikutnya,maka tukarkan.
- Insertion
Sort
Pada metode ini pengurutan dilakukan
dengan cara membandingkan data ke-i (dimulai dari data ke-2 sampai dengan data
terakhir) dengan data berikutnya. Jika ditemukan dat yang lebih kecil maka data
tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya.
- Selection
Sort
Metode ini akan membandingkan elemen
yang sekarang dengan elemen beikutnya sampai dengan elemen yang terakhir. Jika
ditemukan elemen yang lebih kecil dari elemen sekarang, maka dicatat posisinya
dan kemudian ditukar.
- Quick
Sort
Metode Quick Sort adalah membandingkan
suatu elemen pivot dengan elemen yang lain dan menyusunnya sedemikian rupa
sehingga elemen tersebut terletak disebelah kirinya dan elemen-elemen yang
lebih besar daripada pivot terletak
disebelah kanan.
Contoh program :
import
java.util.Scanner;
public class
BubbleSort{
public void
bubbleSort(float larik2[])
{
for (int i=0;i<larik2.length;i++)
{
for (int
elemen=0;elemen<larik2.length-1;elemen++)
{
if
(larik2[elemen]>larik2[elemen+1])
tukar(larik2,
elemen,elemen+1);
}
}
}
public void
tukar(float larik3[], int satu, int dua)
{
float temp;
temp = larik3[satu];
larik3[satu] = larik3[dua];
larik3[dua] = temp;
}
public static void
main(String args[]){
Scanner masuk = new Scanner(System.in);
BubbleSort lrk = new BubbleSort();
float nilai[]= new float[5];
System.out.println("Masukan 5 buat
data nilai");
for (int i = 0; i < 5; i++)
{
System.out.print( (i + 1 )+" :
");
nilai[i]=masuk.nextFloat();
}
System.out.println("Data nilai yang
dimasukan");
for (int i = 0; i < 5; i++)
System.out.println(nilai[i]);
System.out.println("Data hasil
pengurutan ");
lrk.bubbleSort(nilai);
for (int i = 0; i < 5; i++)
System.out.println(nilai[i]);
}
}
|
import
java.util.Scanner;
public class
QuickSort{
public void
quickSort(float A[], int L, int R)
{
int i,j;
float p;
p=A[(L+R)/2];
i=L;
j=R;
while (i<=j)
{
while (A[i]<p) i++;
while (A[j]>p) j--;
if (i<=j)
{
tukar(A,i,j);
i++;
j--;
}
}
if (L<j) quickSort(A,L,j);
if (i<R) quickSort(A,i,R);
}
public void
tukar(float larik3[], int satu, int dua)
{
float temp;
temp = larik3[satu];
larik3[satu] = larik3[dua];
larik3[dua] = temp;
}
public static void
main(String args[]){
Scanner masuk = new Scanner(System.in);
QuickSort lrk = new QuickSort();
float nilai[]= new float[5];
System.out.println("Masukan 5 buat
data nilai");
for (int i = 0; i < 5; i++)
{
System.out.print( (i + 1 )+" :
");
nilai[i]=masuk.nextFloat();
}
System.out.println("Data nilai yang
dimasukan");
for (int i = 0; i < 5; i++)
System.out.println(nilai[i]);
System.out.println("Data hasil
pengurutan ");
lrk.quickSort(nilai, 0, nilai.length-1);
for (int i = 0; i < 5; i++)
System.out.println(nilai[i]);
}
}
|
import
java.util.Scanner;
public class
BinerSearch
{
public int pencarianBiner(int b[], int
kunciPencarian, int low, int high)
{
int i, middle;
while (low<=high)
{
middle = (low+high)/2;
if (kunciPencarian==b[middle])
return middle;
else if (kunciPencarian<b[middle]) high = middle-1;
else low = middle+1;
}
return -1;
}
public static void main(String args[])
{
Scanner
input = new Scanner(System.in);
BinerSearch biner = new BinerSearch();
int i, x, hasil;
boolean ketemu;
int data[] = {9, 13, 14, 26, 34};
System.out.print("Masukan Data yang
dicari = ");
x
= input.nextInt();
hasil = biner.pencarianBiner(data, x, 0,
data.length-1);
if
(hasil>=0)
System.out.println("Data tersebut ada pada posisi ke-"
+(hasil+1));
else
System.out.println("Data
tidak ketemu !");
}
}
|
Selamat mencoba ^_^
Sumber : Modul Praktikum Struktur data STMIK AKAKOM Yogyakarta
No comments:
Post a Comment