Kotlin Cover - Inpows
Kotlin Cover - Inpows

Sorting atau pengurutan adalah salah satu operasi dasar yang sering dilakukan dalam mengembankan sebuah sistem. Salah satu algoritma pengurutan yang sederhana namun efektif adalah Selection Sort. Meskipun algoritma ini tidak selalu menjadi pilihan terbaik dalam hal kinerja (terutama untuk data yang besar), Selection Sort tetap merupakan algoritma yang sangat baik untuk dipelajari karena kesederhanaannya.

Pada artikel ini yaitu Membuat Selection dan Implementasinya di Kotlin, kita akan membahas secara mendalam apa itu Selection Sort, bagaimana cara kerjanya, serta bagaimana mengimplementasikan algoritma ini menggunakan bahasa pemrograman Kotlin.

Apa itu Selection Sort?

Selection Sort adalah algoritma pengurutan yang bekerja dengan cara berulang kali memilih elemen terkecil (atau terbesar, tergantung pada urutan yang diinginkan) dari sub-array yang belum terurut, kemudian menukarnya dengan elemen pertama dari sub-array tersebut. Proses ini diulang hingga seluruh array terurut.

Selection Sort memiliki beberapa karakteristik utama:

  • Kompleksitas Waktu: O(n²), di mana n adalah jumlah elemen dalam array.
  • Pengurutan In-Place: Algoritma ini tidak membutuhkan ruang tambahan untuk array baru, karena elemen-elemen diurutkan di dalam array yang sama.
  • Stabilitas: Selection Sort tidak stabil, yang berarti elemen-elemen yang memiliki nilai yang sama mungkin tidak mempertahankan urutan relatifnya setelah pengurutan.

Implementasi Selection Sort di Kotlin

Sekarang mari kita lihat bagaimana cara mengimplementasikan algoritma Selection Sort di Kotlin.

Kode Kotlin Selection Sort:

fun selectionSort(arr: IntArray) {
    val n = arr.size
    // Iterasi untuk setiap elemen dalam array
    for (i in 0 until n - 1) {
        // Anggap elemen pertama dalam sub-array sebagai yang terkecil
        var minIndex = i

        // Cari elemen terkecil di sub-array yang belum terurut
        for (j in i + 1 until n) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j
            }
        }

        // Tukar elemen terkecil dengan elemen di posisi i
        if (minIndex != i) {
            val temp = arr[i]
            arr[i] = arr[minIndex]
            arr[minIndex] = temp
        }
    }
}

fun main() {
    val angka = intArrayOf(64, 25, 12, 22, 11)
    println("Array sebelum diurutkan: ${angka.joinToString()}")
    selectionSort(angka)
    println("Array setelah diurutkan: ${angka.joinToString()}")
}

Kelebihan dan Kekurangan Selection Sort

Kelebihan:

  • Sederhana dan mudah dipahami: Selection Sort adalah salah satu algoritma pengurutan yang paling mudah untuk dipelajari, karena logikanya sangat langsung.
  • Pengurutan in-place: Tidak memerlukan array atau struktur data tambahan untuk menyimpan hasil pengurutan.
  • Jumlah pertukaran minimal: Selection Sort hanya melakukan pertukaran sebanyak n-1 kali, yang lebih sedikit dibandingkan dengan algoritma lain seperti Bubble Sort.

Kekurangan:

  • Waktu eksekusi lambat (O(n²)): Selection Sort tidak efisien untuk dataset besar karena kompleksitas waktu yang quadratic. Untuk array besar, algoritma ini akan jauh lebih lambat dibandingkan algoritma lain seperti Quick Sort atau Merge Sort.
  • Tidak stabil: Selection Sort tidak mempertahankan urutan relatif dari elemen-elemen yang memiliki nilai yang sama.