Sorting In Java



        Sorting data berarti mengaturnya dalam urutan tertentu, sering kali dalam struktur data seperti array. Anda dapat menggunakan berbagai kriteria pengurutan yang umum seperti mengurutkan nomor dari paling kecil ke paling besar atau sebaliknya, atau menggunakan string secara lexicographically.
        Ada berbagai algoritma pengurutan dan tidak semuanya sama efisien. Daftar algoritma yang akan anda pelajari disini tidak lengkap, tetapi saya sudah mengumpulkan beberapa yang paling umum dan efisien untuk membantu anda


1. Bubble Sort
        Bubble sort bekerja dengan menukar elemen yang berdekatan jika tidak dalam urutan yang diinginkan. Proses ini berawal dari awal array hingga semua elemen tersusun rapi.

  • Source Code
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
  2. * Write a description of class BubbleShort here.
  3. *
  4. * @author (your name)
  5. * @version (a version number or a date)
  6. */
  7. public class BubbleShort
  8. {
  9.    static void bubbleSort(int[] arr){
  10.      int n = arr.length;
  11.      int temp = 0;
  12.      for(int i=0; i<n; i++){
  13.      for(int j=1; j<(n-1); j++){
  14.         if(arr[j-1] > arr[j]){
  15.        //swap elements
  16.        temp = arr[j-1];
  17.        arr[j-1] = arr[j];
  18.        arr[j] = temp;
  19.      }
  20.    }
  21.  }
  22. }
  23. public static void main(String[] args){
  24.     int arr[] = {3,60,35,2,45,320,5};
  25.  
  26.     System.out.println("Array Before Bubble Sort");
  27.     for(int i=0; i<arr.length; i++){
  28.        System.out.print(arr[i] + " ");
  29. }
  30.     System.out.println();
  31.  
  32.     bubbleSort(arr); //sorting array elements using bubble sort
  33.  
  34.     System.out.println("Array After Bubble Sort");
  35.     for(int i=0; i<arr.length; i++){
  36.     System.out.print(arr[i] + " ");
  37.     }
  38.   }
  39. }

  • Output

  • Kelebihan : 
  1. Proses penghitungan Bubble sort merupakan metode yang paling sederhana
  2. Algoritma Bubble Sort mudah dipahami
  3. Langkah atau tahapan dalam pengurutan data sangat sederhana.
  • Kekurangan : 
  1. Proses penghitungan Bubble Sort menggunakan metode pengurutan termasuk paling tidak efisien walaupun dianggap sederhana. Karena proses pengurutan data dilakukan dengan tahapana satu - satu, mulai dari data paling awal sebelah kiri, sampai data terakhir
  2. Ketika data yang kita punya banyak atau dalam jumlah yang besar, maka proses penghitungan akan semakin lama dan lambat. Karena proses pengurutan data secara tunggal (satu - satu).
  3. Jumlah pengulangan akan tetap sama sampai ke data yang terakhir, walaupun sebagian data yang ada telah terurut.

2. Selection Sort
    Selection sort membagi array menjadi sub array yang diurutkan dan tidak diurutkan. Padahal, kali ini sub array yang diurutkan dibentuk dengan memasukkan elemen minimum dari sub array yang tidak disortir di akhir array yang diurutkan, dengan menukar.

  • Source Code
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
  2. * Write a description of class SelectionSort here.
  3. *
  4. * @author (your name)
  5. * @version (a version number or a date)
  6. */
  7. class SelectionSort
  8. {
  9.     void selectionSort(int arr[])
  10. {
  11.        int len = arr.length;
  12.        for(int i=0; i<len-1; i++)
  13. {
  14.  
  15.       //finding the minimum element in the unsorted part of array
  16.       int min = i;
  17.       for(int j=i+1; j<len; j++)
  18.       if(arr[j] < arr[min])
  19.          min = j;
  20.  
  21.      //swapping the found minimum element with the first
  22.     //element of the sorted sub array using temp variable
  23.         int temp = arr[min];
  24.         arr[min] = arr[i];
  25.         arr[i] = temp;
  26.    }
  27. }
  28.  
  29. //display the array element
  30. void printArr(int arr[])
  31. {
  32.    for(int i=0; i<arr.length; i++)
  33.      System.out.print(arr[i] + " ");
  34.    System.out.println();
  35. }
  36.  
  37. public static void main(String[] args)
  38. {
  39.    SelectionSort obj = new SelectionSort();
  40.       int numarr[] = {101,5,18,11,80,67};
  41.  
  42.         System.out.print("Before Selection Sort: ");
  43.         obj.printArr(numarr);
  44.  
  45.        //calling method for selection sorting
  46.        obj.selectionSort(numarr);
  47.  
  48.        System.out.print("After Selection Sort: ");
  49.        obj.printArr(numarr);
  50.     }
  51. }

  • Output

  • Kelebihan :
  1. Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
  2. Mempercepat pencarian.
  3. Mudah menemukan data maksimum/minimum.
  4. Mudah menggabungkannya kembali.
  5. Kompleksitas selection sort relatif lebih kecil.
  • Kekurangan
  1. Sulit untuk membagi masalah.

3. Insertion Sort
        Insertion Sort adalah membagi array ke dalam diurutkan dan disortir sub array.
Bagian yang diurutkan memiliki panjang 1 di awal dan sesuai dengan elemen pertama (paling kiri) dalam array.

  • Source Code

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /**
  2. * Write a description of class InsertionSort here.
  3. *
  4. * @author (your name)
  5. * @version (a version number or a date)
  6. */
  7. public class InsertionSort
  8. {
  9.    public static void insertionSort(int array[]){
  10.       int n = array.length;
  11.       for(int j=1; j<n; j++){
  12.       int key = array[j];
  13.       int i = j-1;
  14.       while((i > -1) && (array[i] > key)){
  15.         array[i+1] = array[i];
  16.         i--;
  17. }
  18.         array[i+1] = key;
  19.     }
  20. }
  21. public static void main(String a[]){
  22.       int[] arr1 = {9,14,3,2,43,11,58,22};
  23.          System.out.println("Before Insertion Sort");
  24.       for(int i:arr1){
  25.          System.out.print(i+ " ");
  26. }
  27.          System.out.println();
  28.  
  29.       //sorting array using insertion sort
  30.        insertionSort(arr1);
  31.           System.out.println("After Insertion Sort");
  32.           for(int i:arr1){
  33.              System.out.print(i+" ");
  34.         }
  35.     }
  36. }

  • Output

  • Kelebihan :
  1. Sederhana dalam penerapannya.
  2. Mangkus dalam data yang kecil.
  3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort.
  4. Mangkus dalam data yang sebagian sudah terurut.
  5. Lebih mangkus dibanding Bubble Sort dan Selection Sort.
  6. Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
  7. Stabil.
  • Kekurangan :
  1. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.
  2. Untuk larik yang jumlahnya besar ini tidak praktis.
  3. Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
  4. Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar.

Referensi :

https://beginnersbook.com/2019/04/java-program-for-selection-sorting/
https://www.javatpoint.com/insertion-sort-in-java
https://www.javatpoint.com/bubble-sort-in-java

Komentar

Postingan populer dari blog ini

Tower of Hanoi - Java

Binary Search Tree

KUIS Akhir EPL