Selasa, 13 Januari 2015

Contoh Algoritma Sorting dan Searching pada Java

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