Oke guys langsung aja saya mau menjelaskan beberapa contoh Algoritma sorting dan searching pada bahasa pemrogaman Java.. Cekidoot.
1. Fibonacci Search
Teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di urutkan, karena teknik ini melakukan pencarian dengan mencari data melalui pola bilangan fibonachi. Contoh : 1,1,2,3,5,8,13
Source kode untuk java :
public class ContohFibonacciByBima {
public static void main(String[] args) {
int n0 = 1, n1 = 1, n2;
System.out.print(n0 + " " + n1 + " ");
for (int i = 0; i < 10; i++) {
n2 = n1 + n0;
System.out.print(n2 + " ");
n0 = n1;
n1 = n2;
}
System.out.println();
}
}
2. Merge Sort
Merge sort merupakan salah satu teknik sorting yang menurutkan suatu data dengan cara penggabungan. Merge sort juga menggunakan proses divide and conquer pada rekursi.Berikut adalah langkah kerja merge sort :a. Devide
Memilah elemen – elemen dari data menjadi dua bagian.
b. Conquer
Menyelesaikan setiap bagian dengan memanggil prosedur merge sort secara rekursif.
c. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan.
Source kode untuk java :
import java.util.*;
public class ContohMergeSortByBima{
public static void main(String[] args){
Integer[] a = {2, 6, 3, 5, 1};
mergeSort(a);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(Comparable [ ] a){
Comparable[] tmp = new Comparable[a.length];
mergeSort(a, tmp, 0, a.length - 1);
}
private static void mergeSort(Comparable [ ] a, Comparable [ ] tmp, int left, int right){
if( left < right )
{
int center = (left + right) / 2;
mergeSort(a, tmp, left, center);
mergeSort(a, tmp, center + 1, right);
merge(a, tmp, left, center + 1, right);
}
}
private static void merge(Comparable[ ] a, Comparable[ ] tmp, int left, int right, int rightEnd ){
int leftEnd = right - 1;
int k = left;
int num = rightEnd - left + 1;
while(left <= leftEnd && right <= rightEnd)
if(a[left].compareTo(a[right]) <= 0)
tmp[k++] = a[left++];
else
tmp[k++] = a[right++];
while(left <= leftEnd)
tmp[k++] = a[left++];
while(right <= rightEnd)
tmp[k++] = a[right++];
for(int i = 0; i < num; i++, rightEnd--)
a[rightEnd] = tmp[rightEnd];
}
}
3. Counting Sort
Counting Sort adalah algoritma pengurutan efektif dan efisien yang melakukan pengurutan dengan ide dasar meletakkan elemen pada posisi yang benar, dimana penghitungan posisi yang benar dilakukan dengan cara menghitung (counting) elemen-elemen dengan nilai lebih kecil atau sama dengan elemen tersebut. Keunggulan Algoritma Counting Sort adalah dapat mengurutkan dengan waktu yang lebih singkat, karena tidak membandingkan dengan elemen lain. Kelemahan algoritma counting sort adalah menggunakan array yang terlalu banyak.Source kode untuk java :
import java.util.Scanner;
public class ContohCountingSortByBima {
private static final int MAX_RANGE = 1000000;
public static void sort( int[] arr )
{
int N = arr.length;
if (N == 0)
return;
int max = arr[0], min = arr[0];
for (int i = 1; i < N; i++)
{
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
int range = max - min + 1;
if (range > MAX_RANGE)
{
System.out.println("\nError : Range too large for sort");
return;
}
int[] count = new int[range];
for (int i = 0; i < N; i++)
count[arr[i] - min]++;
for (int i = 1; i < range; i++)
count[i] += count[i - 1];
int j = 0;
for (int i = 0; i < range; i++)
while (j < count[i])
arr[j++] = i + min;
}
public static void main(String[] args){
Scanner scan = new Scanner( System.in );
System.out.println("Counting Sort Test\n");
int n, i;
System.out.println("Enter number of integer elements");
n = scan.nextInt();
int arr[] = new int[ n ];
System.out.println("\nEnter "+ n +" integer elements");
for (i = 0; i < n; i++)
arr[i] = scan.nextInt();
sort(arr);
System.out.println("\nElements after sorting ");
for (i = 0; i < n; i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}
SEKIAN!!
SEMOGA BERMANFAAT
Thanks For Coming to My Blog
Tidak ada komentar:
Posting Komentar