Rizky Fajar

Sorting

Sorting dalam Struktur Data

Sorting atau pengurutan merupakan proses penyusunan kembali elemen-elemen dalam struktur data berdasarkan aturan tertentu. Aturan ini dapat berupa urutan menaik (ascending) dari nilai terkecil ke terbesar, atau urutan menurun (descending) dari nilai terbesar ke terkecil.

Manfaat Sorting:

  • Mempermudah pencarian data
  • Meningkatkan efisiensi operasi pada struktur data
  • Mempermudah analisis data
  • Memperjelas visualisasi data

Struktur Data yang Mendukung Sorting:

  • Array: Struktur data yang paling umum digunakan untuk sorting. Berbagai algoritma sorting dapat diterapkan pada array.
  • Linked List: Sorting pada linked list sedikit lebih kompleks dibandingkan array, karena elemen-elemennya tidak terhubung secara fisik.
  • Tree: Struktur data hierarki yang memungkinkan sorting dengan cara yang efisien, seperti binary search tree.

Algoritma Sorting:

Terdapat berbagai algoritma sorting dengan kompleksitas waktu dan memori yang berbeda-beda. Berikut beberapa contohnya:

  • Bubble Sort: Algoritma sederhana yang membandingkan elemen-elemen bersebelahan dan menukarnya jika tidak sesuai urutan.
  • Selection Sort: Mencari elemen minimum/maksimum di setiap iterasi dan menukarnya dengan elemen di awal/akhir.
  • Insertion Sort: Memasukkan setiap elemen baru ke posisi yang tepat dalam array yang telah terurut.
  • Merge Sort: Membagi array menjadi dua bagian, mengurutkan bagian-bagian tersebut secara rekursif, dan kemudian menggabungkannya.
  • Quick Sort: Memilih elemen pivot, membagi array berdasarkan pivot, dan mengurutkan bagian kiri dan kanan pivot secara rekursif.

Pemilihan Algoritma Sorting:

Pemilihan algoritma sorting yang tepat tergantung pada beberapa faktor, seperti:

  • Jumlah data yang akan diurutkan
  • Jenis data yang diurutkan
  • Kompleksitas waktu dan memori algoritma
  • Ketersediaan implementasi algoritma

Contoh Implementasi Sorting:

Berikut contoh implementasi sorting dalam bahasa Python:

Python
def bubble_sort(data):
  for i in range(len(data)-1):
    for j in range(len(data)-i-1):
      if data[j] > data[j+1]:
        data[j], data[j+1] = data[j+1], data[j]

def selection_sort(data):
  for i in range(len(data)-1):
    min_idx = i
    for j in range(i+1, len(data)):
      if data[min_idx] > data[j]:
        min_idx = j
    data[i], data[min_idx] = data[min_idx], data[i]

def insertion_sort(data):
  for i in range(1, len(data)):
    key = data[i]
    j = i-1
    while j >= 0 and data[j] > key:
      data[j+1] = data[j]
      j -= 1
    data[j+1] = key

Sorting merupakan operasi penting dalam struktur data dengan berbagai manfaat. Berbagai algoritma sorting tersedia dengan kompleksitas dan implementasi yang berbeda-beda. Pemilihan algoritma yang tepat tergantung pada beberapa faktor, seperti jumlah data, jenis data, dan kebutuhan pengguna.

Materi Blog Lainnya

Pointer

36 views


Searching

44 views


Sorting

32 views


Graph

12 views