← Kembali ke DSA
🎯

Sorting (Pengurutan)

Selection Sort

Berulang kali mencari elemen terkecil dari bagian yang belum terurut, lalu memindahkannya ke batas bagian yang sudah terurut.

Kompleksitas

Waktu (Terbaik)

O(n²)

Waktu (Rata-rata)

O(n²)

Waktu (Terburuk)

O(n²)

Memori

O(1)

Poin Penting

  • ›Selalu melakukan tepat n−1 pertukaran apa pun input-nya, berguna saat operasi tulis itu mahal
  • ›Selalu O(n²), tidak lebih cepat meskipun data sudah terurut
  • ›In-place dan mudah diimplementasikan
  • ›Secara default tidak stable (pertukaran bisa mengubah urutan relatif elemen yang sama)
  • ›Paling cocok untuk array kecil atau saat jumlah pertukaran perlu ditekan

Visualizer Interaktif

Langkah 0 / 0✓ Selesai diurutkan!
LambatCepat
NormalDibandingkanDitukarTerurut

Contoh Kode

Swift
func selectionSort(_ arr: inout [Int]) {
    let n = arr.count
    for i in 0..<n - 1 {
        var minIdx = i
        for j in i + 1..<n {
            if arr[j] < arr[minIdx] { minIdx = j }
        }
        if minIdx != i { arr.swapAt(i, minIdx) }
    }
}

var nums = [64, 25, 12, 22, 11]
selectionSort(&nums)
print(nums)  // [11, 12, 22, 25, 64]

Latihan Soal

Sort Colors
Sort an Array