ASD Modul 6 (Sorting&Searching) PDF
ASD Modul 6 (Sorting&Searching) PDF
MODUL KE-6
ALGORITMA
PENCARIAN DAN PENGURUTAN
LABORATORIUM PEMROGRAMAN
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
2015
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.
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
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
} // 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
}
}
}
public static void main(String[] args)
{
cetak();
System.out.println();
selectionSort();
cetak();
System.out.println();
}
}
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,