Sorting (Pengurutan Data)


🧭 1. Pengertian Sorting

https://images.openai.com/static-rsc-4/VA3MTnPTVe4XtcFjGv68fPPPvmnbvrulZA2WB9Ckj6RSFCo6rkkLp_KEwYfwgE-GVUDxpn2euVEmN0AY5fA-UT1fU2DV0rmwlaSMTVNaEhJerRfaPa9wb1way_Iul8NGMWpcq4fwkbqaA5CdxVfNQhRnRqGd4fWUrY1_z9ZecuFGH4c1R5q5Q0jXwc27Zi4M?purpose=fullsize
https://images.openai.com/static-rsc-4/jBaUxu_1XA7mqp9NhYYT56fqdleh14fXjlA8d7sUhw9ua2ce-c4tyZq8BQpPGUXE5exdjsE7g73-9gyz2KVT1eHD1V7mt1sQsNIwGsZrI81HEs_oRSaSJctVGRc5adB7cQ2V_rhv6lv5yXUi022g8d8v7Koqt1z4JrPlAvdhku9p8xNwrPcQsX051Ijm1Zfg?purpose=fullsize
https://images.openai.com/static-rsc-4/IZpzDmKrjT97UUWas_SrHmiiZddF_-zlcENoGN0aocvA7JFUjwnEnyDySAf0eQWRLjuaWsMC2wmxdK84Cbaqqz6g7LbL6kd4qVuWayXI_8Y034gDwQ6CsNHx1sZAHnasuGVmopmdRduBW-k46V8icYHDNpFs1lFqD-SHmswRjhYHcmpiMCtUwylhamIB5xPU?purpose=fullsize

6

πŸ“– Definisi

Sorting adalah proses mengatur data dalam urutan tertentu, biasanya:

  • Ascending (menaik: kecil β†’ besar)
  • Descending (menurun: besar β†’ kecil)

🧠 Narasi Konseptual

Bayangkan kamu memiliki buku berserakan di meja:

  • Tanpa sorting β†’ sulit mencari buku
  • Dengan sorting β†’ buku tersusun rapi berdasarkan abjad atau kategori

➑️ Sorting membuat data lebih mudah dicari, dianalisis, dan digunakan.


🎯 2. Tujuan Sorting

πŸ“Š Tabel Tujuan Sorting

TujuanPenjelasan
Memudahkan pencarianData lebih terstruktur
Meningkatkan efisiensiAlgoritma pencarian lebih cepat
Analisis dataStatistik lebih mudah
User experienceData lebih rapi ditampilkan

🧠 Narasi

Sorting bukan hanya estetika, tetapi fondasi efisiensi komputasi, terutama pada data besar.


βš™οΈ 3. Kategori Algoritma Sorting

πŸ“Š Tabel Kategori

KategoriContoh
Simple SortingBubble, Selection, Insertion
Efficient SortingMerge Sort, Quick Sort
Hybrid SortingTimSort (Python, Java)

πŸ” 4. Bubble Sort

https://images.openai.com/static-rsc-4/IBd_fmaOe6sL7SMFxVBL8U13v1nBFtcx7alaX91UAXu6aMD_Gjc2X693HcQfrrZy-jO80Iw8PHZ36mZea9fR9LW-ywUPUGc-1-xBVz1U336v-TyPOdoUSNfOU6bP2yZUhLKJGLB_y_fdWpeWMogH3VpK4NOTSIm_mg3-FBi6cBRtCNT3CD5Bihk5pc3JBWxu?purpose=fullsize
https://images.openai.com/static-rsc-4/lVmaFTG73c7VspyQo9VLpODHCxh7TZQ2qRJD_NofuzOWuOe-l2N7Ld97yK3uHYQh6JsAbZ-CmdniFxJOZsM9xEujTHY9Ee1SdMSzpmm8YhirKTVs7TTpTtezDeurCXozjgC4Zh2zoPREcraOxmNgRkiyNdcBlB-TVeI8yZ1ohSlxY-rQBtIc1hKYg9pxe9Ji?purpose=fullsize
https://images.openai.com/static-rsc-4/px_tcpAUSx_rFl5x-tWe6og1PvAAll6TU9UKAKlVNGph2AGEFoAtCLrUwaYnX3NBXfxr9TfD8mMYIzLeTcvSzdzKb1p76uRyt4xiMqx1WHG-zGVG7tGVNmcs79O8AeWxQ4yBrP-cKwDrX0epZkCLqAbTUE5d90NVSTEIoOodeVA10bkKDURG7oN4P7Ap3fJe?purpose=fullsize

5

πŸ“– Konsep

Bubble Sort membandingkan elemen bersebelahan dan menukar jika salah urut.


🧠 Narasi

Seperti gelembung air:

  • Elemen terbesar β€œnaik” ke akhir secara bertahap

πŸ’» Contoh

for(int i=0; i<n; i++){
for(int j=0; j<n-1; j++){
if(arr[j] > arr[j+1]){
swap(arr[j], arr[j+1]);
}
}
}

⏱️ Kompleksitas

  • Best: O(n)
  • Worst: O(nΒ²)

πŸ” 5. Selection Sort

https://images.openai.com/static-rsc-4/MZv5pmEM4y_HwFa8_aYR5fF-e1RZIPL7sXfw00n45_Q0M6jwqNUid1K2HjEBcWtU4u8i7S8622bKhr7bX3FRQ7iSOaInpc5zrXqUBLEbaQ7BuehkaECNjLxOcBxLiS4Tv-rI8lrFYNbQJwEmw5pI7qDovYCqmzA-7EP_EEt20sM9EkxBLqt-5PmXracpeFY_?purpose=fullsize
https://images.openai.com/static-rsc-4/RIUmn-YTKjw4fKbE1hx95cBx0_eRXQUpDqxImfyKDoAoaODTX-aCIA4QKRd8KMS9yroUoJ5XKqxm1Wb4E0AZdbHsZfdqfppCBJjHfVE9Fy66iGGAU7T_pwdfeZ5NxMXapq_f0jLsdH-rPxj7lKxp8ZNtSUH56frjucSzr-q-aRC7wViuGH29FF-FY4jDprBR?purpose=fullsize
https://images.openai.com/static-rsc-4/A47ldYW6CozxW9a_0KOwTGmU-lNf_j-t0ht9I72sGtMS5HGgCFL2-DpPma0MG_Ml2jbP3kgWXDB74qVBh5RLIbzSN5hzL0tJAGvBOT6qlSua1lpWLESddS58RDJ6NHQ34TwOIM6CWlsADravPm6QeI26S6MsC0_Ezy7I-XzV2BVuxgOQClESWqTSxqm4WjMV?purpose=fullsize

6

πŸ“– Konsep

Mencari elemen terkecil lalu menukarnya ke posisi awal.


🧠 Narasi

Seperti memilih juara:

  • Cari yang paling kecil
  • Taruh di posisi paling depan

πŸ’» Contoh

for(int i=0; i<n-1; i++){
int min = i;
for(int j=i+1; j<n; j++){
if(arr[j] < arr[min]){
min = j;
}
}
swap(arr[i], arr[min]);
}

⏱️ Kompleksitas

➑️ O(n²) (konsisten)


πŸ” 6. Insertion Sort

https://images.openai.com/static-rsc-4/qfLJRTF8tjuzRKCAhJHuf4t8qn_1-2L_bvuPB4pKjL2koMeFzheloySyOB--o9VXp24dbO3Ri9KL19riRTVzIvZGBu2m9-A_6solNPSeFThn8ELPCG3qyH8xDBJE_7TfNlaOvGFaeXQ22pGjQLYzokK1lyykoM4JNEAHh5sh7cwWKX370YsWI2xc-AnJUU2k?purpose=fullsize
https://images.openai.com/static-rsc-4/xlh_b_4RYu1AXutD4EVijD7aKVtetf4AcT1r26X_80-vDeteIongRuIpvihNOxosSDOiSuIKiw4ZrSGbCEYk-se5q5kiBSlNqf2IEFhE9FzylU4xE-PahtqNbfQ8_20g8BJydrt5YlNw3l7qPuR7Gh8qHllS54vV4ErLiSWQ6Zkqf2j8LGi-5t5ggMUWL-NY?purpose=fullsize
https://images.openai.com/static-rsc-4/ORVf5Wl_1t6mWaJtMJ66YF5kTOpPLldVyTz3zOktXNLWiBZ1X-snxovD90Wh40nlMrOvSrkLwf5STBneBrHp269VgAJCXy_sY9QcpfGEi8RoHYsqu_nsdbPIf49w9paNmvs5gVT27XFSbm7qLw00s34eMii3yXgrRMaKzRsCD8CY8-HcNJSk3q2nFkO2dJgC?purpose=fullsize

6

πŸ“– Konsep

Menyusun elemen satu per satu ke posisi yang tepat.


🧠 Narasi

Seperti menyusun kartu remi:

  • Ambil satu kartu
  • Masukkan ke posisi yang benar

πŸ’» Contoh

for(int i=1; i<n; i++){
int key = arr[i];
int j = i-1; while(j >= 0 && arr[j] > key){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}

⏱️ Kompleksitas

  • Best: O(n)
  • Worst: O(nΒ²)

⚑ 7. Merge Sort

https://images.openai.com/static-rsc-4/vbp8utbnLn4quUrHIWaBIrJ3KmDsGqDuLxdLxQo-YTHNuo0o2keHHSZDqodFCEQMr6Nfy1pL4F5s6vf_CXMFfg1vAE89f-aQ6LP_c7lAluxUlS5YkZRqluU8nDFkdvL7XTpz3vS6ljjfxpZ1dnnX79F8kK4Fjl7Fh9OjDRTNpPIJDSEd6bK3Kh6iHSQAxwxh?purpose=fullsize
https://images.openai.com/static-rsc-4/ZRjetySurX8fh9cSSHOHx_beIMRoYADKmXW-CAbavdv7NwsuzUyoW9mL35OR6tMqm9MRulg_Qntt61jbsfPHsskDbA2CJXhvwLOClcZqmtwcOBM80piIzEkAovUyBhoDL3UwR1UZJZ2ZcWhP857s_-5PdiHjEqFum-GjBe7xJFJMFoG6YamWp_TZaYx9iJ_r?purpose=fullsize
https://images.openai.com/static-rsc-4/Kw7hRLKiACHsh2Q0hlqiyfGlqkhnZoEw_z9Y392xnRvYOoJ4m4d1McNtYnutMIKj-sxMq1eO31ENCzkGaJH2RqjqyDo4_xWDAR-E1EzZ5Weg33Dj7uXU4rDwMj1JgeTYqGhjnpglv50yqAc7aC9e-qIj04zOlp5rBuG5B7BOuPgbDZJWR9ITpJXBrD0ioOpo?purpose=fullsize

5

πŸ“– Konsep

Menggunakan pendekatan divide and conquer:

  • Membagi data
  • Mengurutkan
  • Menggabungkan kembali

🧠 Narasi

Seperti membagi tugas:

  • Pecah masalah kecil
  • Selesaikan
  • Gabungkan hasil

⏱️ Kompleksitas

➑️ O(n log n)


⚑ 8. Quick Sort

https://images.openai.com/static-rsc-4/EqW8azFD25zpHXi6mB43SqGLqvo83-tKfntfBg1SSSToPkDnFi5akbqMxfBoSWGckyGW3n3W6NKyc3dfvRicwEOEXD9MDhiOvwwBsrNRgbGNBPXIgmasWkRo_FwZJAUuFYjR9mT_cqKX3k41fNGqastlejpEppqzb3mluTaCWc2Xlog_DVV7W7md5Y8naCYW?purpose=fullsize
https://images.openai.com/static-rsc-4/l4gmbirpMfGiJBygy9a1ryu8AmZ4fwxGVZZuV_GL4NlMyAbT50ptXIVoUT9OAEFLyMA8gUjvhb6JOKUd18O4NXKDScPkg0DZQSe8dCm9rNKhbh0c8YgCpWh_nxZ8vKTITB641AwQ7QDlGlFmWy4teQUnVpNYLwC1JwuqD7LjKHIgmnYB95YMhIWIy5NXqIEw?purpose=fullsize
https://images.openai.com/static-rsc-4/YOkw4qt9y9C_r7qPpkJoQEoeFNT4IJebYR64YC3TN3eCv7M0kZ6Opx65TgLr3g_vQdwnFQkaPvOCjlAsnCTfVLdWmOfUrLtNDdooQjyr6log2OQWqnEUx23_63qjbbM4FJLiNxsa1zIYm6-8qq-Fg5OcNz-3p8yeocnercqjPmwyQMBMoXp_LYjeiSS0phVL?purpose=fullsize

7

πŸ“– Konsep

Menggunakan pivot untuk membagi data:

  • Kiri < pivot
  • Kanan > pivot

🧠 Narasi

Seperti memilih β€œpatokan”:

  • Data kecil di kiri
  • Data besar di kanan

⏱️ Kompleksitas

  • Best: O(n log n)
  • Worst: O(nΒ²)

πŸ“Š 9. Perbandingan Algoritma Sorting

πŸ“Š Tabel Perbandingan

AlgoritmaBestAverageWorstStabil
Bubble SortO(n)O(nΒ²)O(nΒ²)Ya
Selection SortO(nΒ²)O(nΒ²)O(nΒ²)Tidak
Insertion SortO(n)O(nΒ²)O(nΒ²)Ya
Merge SortO(n log n)O(n log n)O(n log n)Ya
Quick SortO(n log n)O(n log n)O(nΒ²)Tidak

🧠 10. Stabil vs Tidak Stabil Sorting

πŸ“– Definisi

  • Stabil: urutan data sama tetap terjaga
  • Tidak stabil: urutan bisa berubah

πŸ”„ 11. Visual Perbandingan Sorting

https://images.openai.com/static-rsc-4/IBd_fmaOe6sL7SMFxVBL8U13v1nBFtcx7alaX91UAXu6aMD_Gjc2X693HcQfrrZy-jO80Iw8PHZ36mZea9fR9LW-ywUPUGc-1-xBVz1U336v-TyPOdoUSNfOU6bP2yZUhLKJGLB_y_fdWpeWMogH3VpK4NOTSIm_mg3-FBi6cBRtCNT3CD5Bihk5pc3JBWxu?purpose=fullsize
https://images.openai.com/static-rsc-4/BSRDrZ_cxaNK7-e7v0S3FWXLTUR9bH77jdbpaHWL3e6haS8MaZcvoQ2LRLE3N5RnCj-G56lbzsGn6rc5uB-K-YqtedbIaP9H6rGOexGzqCjD2B9HgitcPevS_ZqcAXwe-Y90q2YfioulSpbrW3nE5Pd9-DKzL9NQcLfzSsCMgYRVdu9O-y2nSnyanHbaKr0F?purpose=fullsize
https://images.openai.com/static-rsc-4/A3YoiOzEVX7hwchLt9OwQpt54V19EB_QIR3RyHu3HRizjC9jbOHDR_uZf1jkGq4yN-MepwFvhJ9MNzgHn2HNm0yaD9LEcUvqfn9DRnmx5-f9Dotu4ZRnB_4ZvB7mEboh90wzvEKQAakOKpZMWWmCrPkkckkqIV-nbyJZsIcpqEC9pDteSCvJUtEeOOAxYUuI?purpose=fullsize

6


πŸ§ͺ 12. Studi Kasus Nyata

πŸ“Œ Sistem Nilai Mahasiswa

  • Sorting nilai tertinggi β†’ ranking
  • Sorting abjad β†’ daftar mahasiswa
  • Sorting waktu β†’ log aktivitas

πŸ’» 13. Implementasi Sederhana (Python)

arr = [5, 2, 9, 1, 5, 6]arr.sort()  # built-in sorting
print(arr)

🧠 14. Kenapa Sorting Penting?

πŸ“Œ Narasi

Sorting adalah dasar dari:

  • Search (Binary Search)
  • Database indexing
  • Machine learning preprocessing
  • Big data analytics

πŸ“š 15. Ringkasan Materi

  • Sorting adalah proses mengurutkan data
  • Ada banyak algoritma dengan kompleksitas berbeda
  • Divide and conquer (Merge & Quick Sort) sangat efisien
  • Sorting penting untuk optimasi sistem
  • Digunakan di hampir semua aplikasi komputer

πŸ“ 16. Latihan / Diskusi

✏️ Soal Teori

  1. Jelaskan pengertian sorting
  2. Apa perbedaan Bubble dan Quick Sort?
  3. Apa itu stable sorting?

πŸ’» Soal Praktikum

  1. Implementasikan Bubble Sort
  2. Implementasikan Insertion Sort
  3. Bandingkan waktu eksekusi sorting

🎯 Penutup

Sorting adalah fondasi penting dalam struktur data dan algoritma karena:

  • Meningkatkan efisiensi pencarian
  • Digunakan dalam sistem nyata
  • Menjadi dasar algoritma lanjutan