Anda di halaman 1dari 11

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

MODUL KE-6
ALGORITMA
PENCARIAN DAN PENGURUTAN

LABORATORIUM PEMROGRAMAN
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
2015

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

I.

TUJUAN
Mahasiswa mampu :
1. Memahami algoritma pencarian (linear search dan binary search)
2. Menerapkan algoritma pencarian kedalam pemrograman
3. Memahami algoritma pengurutan (insertion sort, selection sort, bubble sort, merge sort)
4. Menerapkan algoritma pengurutan kedalam pemrograman

II.

ALAT YANG DIGUNAKAN


Peralatan yang digunakan :
1. Perangkat PC yang terinstall Java
2. Editor Java

III. DASAR TEORI


Searching adalah proses pencarian data yang ada pada suatu deret data dengan cara
menelusuri data-data tersebut. Tahapan paling penting pada searching: memeriksa jika
data yang dicari sama dengan data yang ada pada deret data.
1. Sequential Search
Disebut juga linear search atau Metode pencarian beruntun.
Adalah suatu teknik pencarian data yang akan menelusuri tiap elemen satu per-satu
dari awal sampai akhir.
Data awal = tidak harus dalam kondisi terurut.
Best case : jika data yang dicari terletak di depan sehingga waktu yang dibutuhkan
minimal.
Worst case : jika data yang dicari terletak di akhir sehingga waktu yang dibutuhkan
maksimal.
2. Binary Search
Teknik pencarian = data dibagi menjadi dua bagian untuk setiap kali proses
pencarian.
Data awal harus dalam kondisi terurut. Sehingga harus dilakukan proses sorting
terlebih dahulu untuk data awal.
Mencari posisi tengah :

Posisi tengah = (posisi awal + posisi akhir) / 2

Jika data tengah sama, berarti ketemu.


Jika lebih besar, maka posisi awal adalah posisi tengah + 1
Jika lebih kecil, maka posisi akhir adalah posisi tengah 1
Best case : jika data yang dicari terletak di posisi tengah.
Worst case : jika data yang dicari tidak ditemukan.

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

IV. PROSEDUR PELAKSANAAN


Prosedur pelaksanaan praktikum adalah sebagai berikut :
1. Mahasiswa mencoba latihan yang ada pada modul praktikum
2. Mahasiswa menganalisa hasil dari program pada latihan yang telah dijalankan
3. Mahasiswa mengerjakan tugas yang diberikan
4. Mahasiswa mendemonstrasikan program yang telah dikerjakan pada dosen/assisten
5. Mahasiswa membuat laporan dari tugas yang telah dikerjakan
6. Upload laporan melalui e-labit.umm.ac.id

V. LATIHAN
ALGORITMA PENCARIAN
1. Linear atau Sequential Search
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.Math.*;
public class SequentialSearch
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int j, k, number, size;
boolean found = false;
System.out.print("Enter the array size: ");
size = sc.nextInt();
int[] intArray = new int[size];
for (j=0; j<size; j++)
intArray[j] = (int) (random()*100);
System.out.println(" " + size + " element int array of random ints between 0 and 99 has been
loaded.");
System.out.println("The random array for verification is:\n\n");
System.out.println(Arrays.toString(intArray));
System.out.println("\nGuess one of the numbers: ");
number = sc.nextInt();
//// linear search algorithm
k=0;
while (!found && k<size)
if (intArray[k]==number)
found=true;
else
k +=1;
System.out.println();
if (found)
System.out.println("Found in position " + k);
else
System.out.println("The number is not found");
/////////////////////////
}
}
Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

2. Binary Search
class OrdArray
{
private long[] a; // ref to array a
private int nElems; // number of data items
//----------------------------------------------------------public OrdArray(int max) // constructor
{
a = new long[max]; // create array
nElems = 0;
}
//----------------------------------------------------------public int size()
{ return nElems; }
//----------------------------------------------------------public int find(long searchKey)
{
int lowerBound = 0;
int upperBound = nElems-1;
int curIn;
while(true)
{
curIn = (lowerBound + upperBound ) / 2;
if(a[curIn]==searchKey)
return curIn; // found it
else if(lowerBound > upperBound)
return nElems; // cant find it
else // divide range
{
if(a[curIn] < searchKey)
lowerBound = curIn + 1; // its in upper half
else
upperBound = curIn - 1; // its in lower half
} // end else divide range
} // end while
} // end find()
//----------------------------------------------------------public void insert(long value) // put element into array
{
int j;
for(j=0; j<nElems; j++) // find where it goes
if(a[j] > value) // (linear search)
break;
for(int k=nElems; k>j; k--) // move bigger ones up
a[k] = a[k-1];
a[j] = value; // insert it
nElems++; // increment size
} // end insert()
//----------------------------------------------------------public boolean delete(long value)
{
int j = find(value);
if(j==nElems) // cant find it
return false;
else // found it
{
for(int k=j; k<nElems; k++) // move bigger ones down
a[k] = a[k+1];
nElems--; // decrement size
return true;
}
Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

} // end delete()
//----------------------------------------------------------public void display() // displays array contents
{
for(int j=0; j<nElems; j++) // for each element,
System.out.print(a[j] + " "); // display it
System.out.println("");
}
//----------------------------------------------------------} // end class OrdArray
///////////////////////////////////////////////////////////////
class OrderedApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
OrdArray arr; // reference to array
arr = new OrdArray(maxSize); // create the array
arr.insert(77); // insert 10 items
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(33);
arr.display(); // display items
int searchKey = 99; // search for item
System.out.println("Search key " + searchKey);
if( arr.find(searchKey) != arr.size() )
System.out.println("Found " + searchKey);
else
System.out.println("Cant find " + searchKey);
} // end main()
} // end class OrderedApp

ALGORITMA PENGURUTAN
1. Contoh class untuk algoritma pengurutan selection sort
public class selectionSort {
static int X[]={7,3,4,1,8,2,6,5};
sttaic void selectionSort()
{
int i,min,j,t;
int n = X.length;
for (i=0; i < n; i++) {
min = i;
for (j = i+1; j < n; j++) {
if (X[min] > X[j]){
min = j;
}
}
if(min!=i){
t = X[min];
X[min] = X[i];
X[i] = t;
Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

}
}
}
public static void main(String[] args)
{
cetak();
System.out.println();
selectionSort();
cetak();
System.out.println();
}
}

2. Contoh method untuk algoritma pengurutan Insertion Sort


void insertionSort()
{
int i=1,t,j;
int n= X.length;
for(i=1;i<n;i++){
t=X[i];
for (j =i-1; j >= 0; j--) {
if (t < X[j]){
X[j+1] = X[j];
X[j]=t;
}
else {
X[j+1] = t;
break;
}
}
}
}

3. Contoh method untuk algoritma pengurutan Bubble Sort


void bubbleSort()
{
boolean status = true;
int i,j,tmp;
int n = X.length;
for (i=0; i < n-1 && status; i++){
status = false;
for (j=n-1; j > i; j--) {
if (X[j] < X[j-1]) {
tmp = X[j];
X[j] = X[j-1];
X[j-1] = tmp;
status = true;
}
}
}
}

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

4. Contoh method untuk algoritma pengurutan Merge Sort


void mergeSort(int l,int r)
{
if(l==r) return;
else{
int mid = (l+r)/2;
mergeSort(l, mid);
mergeSort(mid+1,r);
Merging(l,mid+1,r);
}
}
static void Merging(int kiri,int tengah, int kanan)
{
int j=0;
int batasBawah = kiri;
int mid = tengah-1;
int n=kanan-batasBawah+1;
int tampung[] = new int[X.length];
while(kiri <=mid && tengah <= kanan){
if(X[kiri] < X[tengah])
tampung[j++]=X[kiri++];
else
tampung[j++]=X[tengah++];
}
while(kiri<=mid){
tampung[j++]=X[kiri++];
}
while(tengah<=kanan){
tampung[j++]=X[tengah++];
}
for(int i=0;i<n;i++)
{
X[batasBawah+i]=tampung[i];
}
}

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

VI. TUGAS PRAKTIKUM


Melanjutkan tugas praktikum sebelumnya yaitu aplikasi kontak telpon yang mana sebelumnya
kita sudah membuat buku telpon dengan fitur berikut :
a. Tambah kontak unlimited.
b. Edit Kontak.
c. Hapus Kontak.
d. Lihat Kontak. (plus searching).
e. Scroll kontak (geser a b c d).
Sekarang kita bisa tambahkan satu fitur lagi yaitu fitur sorting. Fitur ini bisa digunakan untuk
mengurutkan nama-nama kontak yang ada pada kontak telpon kita. Dengan aturan berikut :
1. Mengurutkan data kontak telpon berdasrkan nama kontak dan bisa diurutkan 2 arah,
yaitu ascending dan descending. Dengan syarat tanpa menggunakan library pada java
dengan kata lain coding manual. (point max 85).
2. Dengan menyelesaikan aturan nomor 1 (diatas) ditambah dengan mengerjakan dengan
2 pola, yaitu quick sort, dan merge sort. Jadi pada menu aplikasi kita bisa memilih metode
sorting yaitu quick sort, dan merge sort. (point max 110).
Nilai akhir demo akan dikurangi dgn kekurangan pada fitur (tiap fitur -5 point) dengan syarat
sudah bisa mengerjakan yang pencarian 1 atau 2. Misal :
Nilai yang di dapat : 85.
a. Tambah kontak unlimited. (sudah)
b. Edit Kontak. (belum)
c. Hapus Kontak. (belum)
d. Lihat Kontak. (belum)
e. Scroll kontak (geser a b c d). (belum)
f. Searching (sudah)
g. Sorting (sudah)
Nilai akhir adalah 85-5-5-5-5=65.

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

Keterangan :
1. Tugas praktikum dikerjakan sendiri, jika ketahuan mengcopas, mencontoh, mereplika,
menjiplak dll akan dikenakan sanksi nilai x .
2. Tidak ada demo susulan, sesuai dengan jadwal yang telah ditentukan, kecuali ada alasan
yang logis dan dapat di maklumi.
3. Kriteria penilaian praktikum:
a. 25% Absensi.
b. 50% demo tugas.
c. 25% laporan praktikum.
d. Tambahan nilai (sesuai kebijakan aslab masing-masing), misal keaktifan dll.
4. Kriteria penilaian laporan:
a. Menggunakan template yang sudah disediakan.
b. Melampirkan hasil praktikum (latihan dan tugas modul) dan screenshot hasil programdan
penjelasannya.
c. Dikerjakan sendiri, jika ketahuan mengcopas, mencontoh, mereplika, menjiplak dll akan
dikenakan sanksi pengosongan nilai laporan.
Penting!
Tetap semangat, jangan menyerah dan pasti bisa jika mau berusaha, jangan lupa juga untuk
terus berdoa agar dapat mencapai hasil yang maksimal, jangan pernah takut untuk bertanya jika
masih ada kebingungan yang melanda, diselingi terus berolah raga, makan yang banyak dan
sehat sesuai 4 sehat 5 sempurna serta minum multivitamin agar tetap bugar :D,

Dokumen Laboratorium Teknik Informatika UMM @ 2015 Modul Praktikum Algoritma

By. Team Informatika UMM

dan Struktur Data

Anda mungkin juga menyukai