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
- /**
- * Write a description of class BubbleShort here.
- *
- * @author (your name)
- * @version (a version number or a date)
- */
- public class BubbleShort
- {
- static void bubbleSort(int[] arr){
- int n = arr.length;
- int temp = 0;
- for(int i=0; i<n; i++){
- for(int j=1; j<(n-1); j++){
- if(arr[j-1] > arr[j]){
- //swap elements
- temp = arr[j-1];
- arr[j-1] = arr[j];
- arr[j] = temp;
- }
- }
- }
- }
- public static void main(String[] args){
- int arr[] = {3,60,35,2,45,320,5};
- System.out.println("Array Before Bubble Sort");
- for(int i=0; i<arr.length; i++){
- System.out.print(arr[i] + " ");
- }
- System.out.println();
- bubbleSort(arr); //sorting array elements using bubble sort
- System.out.println("Array After Bubble Sort");
- for(int i=0; i<arr.length; i++){
- System.out.print(arr[i] + " ");
- }
- }
- }
- Output
- Kelebihan :
- Proses penghitungan Bubble sort merupakan metode yang paling sederhana
- Algoritma Bubble Sort mudah dipahami
- Langkah atau tahapan dalam pengurutan data sangat sederhana.
- Kekurangan :
- 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
- 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).
- 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
- /**
- * Write a description of class SelectionSort here.
- *
- * @author (your name)
- * @version (a version number or a date)
- */
- class SelectionSort
- {
- void selectionSort(int arr[])
- {
- int len = arr.length;
- for(int i=0; i<len-1; i++)
- {
- //finding the minimum element in the unsorted part of array
- int min = i;
- for(int j=i+1; j<len; j++)
- if(arr[j] < arr[min])
- min = j;
- //swapping the found minimum element with the first
- //element of the sorted sub array using temp variable
- int temp = arr[min];
- arr[min] = arr[i];
- arr[i] = temp;
- }
- }
- //display the array element
- void printArr(int arr[])
- {
- for(int i=0; i<arr.length; i++)
- System.out.print(arr[i] + " ");
- System.out.println();
- }
- public static void main(String[] args)
- {
- SelectionSort obj = new SelectionSort();
- int numarr[] = {101,5,18,11,80,67};
- System.out.print("Before Selection Sort: ");
- obj.printArr(numarr);
- //calling method for selection sorting
- obj.selectionSort(numarr);
- System.out.print("After Selection Sort: ");
- obj.printArr(numarr);
- }
- }
- Output
- Kelebihan :
- Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
- Mempercepat pencarian.
- Mudah menemukan data maksimum/minimum.
- Mudah menggabungkannya kembali.
- Kompleksitas selection sort relatif lebih kecil.
- Kekurangan
- 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
- /**
- * Write a description of class InsertionSort here.
- *
- * @author (your name)
- * @version (a version number or a date)
- */
- public class InsertionSort
- {
- public static void insertionSort(int array[]){
- int n = array.length;
- for(int j=1; j<n; j++){
- int key = array[j];
- int i = j-1;
- while((i > -1) && (array[i] > key)){
- array[i+1] = array[i];
- i--;
- }
- array[i+1] = key;
- }
- }
- public static void main(String a[]){
- int[] arr1 = {9,14,3,2,43,11,58,22};
- System.out.println("Before Insertion Sort");
- for(int i:arr1){
- System.out.print(i+ " ");
- }
- System.out.println();
- //sorting array using insertion sort
- insertionSort(arr1);
- System.out.println("After Insertion Sort");
- for(int i:arr1){
- System.out.print(i+" ");
- }
- }
- }
- Output
- Kelebihan :
- Sederhana dalam penerapannya.
- Mangkus dalam data yang kecil.
- Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort.
- Mangkus dalam data yang sebagian sudah terurut.
- Lebih mangkus dibanding Bubble Sort dan Selection Sort.
- Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit.
- Stabil.
- Kekurangan :
- Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.
- Untuk larik yang jumlahnya besar ini tidak praktis.
- Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
- 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
Posting Komentar