Program Menu untuk Proses Sort
Tau ga apa itu Sort?
Jadi "Sort" adalah istilah yang sering digunakan dalam konteks pengurutan data atau elemen-elemen dalam urutan tertentu, baik itu urutan menaik (ascending) atau menurun (descending). Dalam berbagai konteks seperti komputer dan matematika, "sort" berarti mengatur elemen-elemen dalam struktur data seperti array, daftar, atau tabel menurut kriteria tertentu.
Sort terdiri dari beberapa jenis, yuk gaes simak terus biar tau apa-apa aja jenis sort beserta pengertian dan contoh implementasi pada program phyton.
1. Bubble Sort
Bubble sort dalah algoritma pengurutan yang sederhana, yang bekerja dengan cara membandingkan elemen-elemen yang berdekatan dalam suatu daftar (list) dan menukarnya jika mereka berada dalam urutan yang salah. Proses ini diulang terus-menerus sampai daftar terurut dengan benar.
Contoh Implementasi proses Bubble Sort pada Program Phyton;
Input
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
if not swapped:
break
arr = [13, 22, 1, 10, 20, 31, 17]
print("Array sebelum diurutkan:")
print(arr)
bubble_sort(arr)
print("Array setelah diurutkan:")
print(arr)
Output
Array sebelum diurutkan:
[13, 22, 1, 10, 20, 31, 17]
Array setelah diurutkan:
[1, 10, 13, 17, 20, 22, 31]
2. Selection Sort
Selection Sort adalah algoritma pengurutan yang juga termasuk dalam kategori algoritma sederhana. Prinsip kerjanya adalah memilih elemen terkecil (atau terbesar, tergantung urutan yang diinginkan) dari daftar yang belum terurut dan menukarnya dengan elemen pertama yang belum terurut. Proses ini diulang untuk setiap elemen hingga seluruh daftar terurut.
Contoh Implementasi proses Selection Sort pada Program Phyton;
Input
def selection_sort(arr):
n = len(arr)
# Iterasi untuk setiap posisi dalam daftar
for i in range(n):
# Temukan indeks elemen terkecil dari i sampai akhir
min_index = i
for j in range(i+1, n):
if arr[j] < arr[min_index]:
min_index = j
# Tukar elemen i dengan elemen terkecil yang ditemukan
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
# Contoh penggunaan
arr = [64, 25, 12, 22, 11]
print("Sebelum pengurutan:", arr)
sorted_arr = selection_sort(arr)
print("Setelah pengurutan:", sorted_arr)
Output
Sebelum pengurutan: [64, 25, 12, 22, 11]
Setelah pengurutan: [11, 12, 22, 25, 64]
3. Insertion Sort
Insertion Sort adalah algoritma pengurutan yang bekerja dengan cara menyisipkan elemen ke dalam posisi yang tepat dalam urutan yang sudah terurut. Konsep utamanya adalah membangun daftar yang terurut satu per satu dengan cara memindahkan elemen-elemen yang belum terurut ke posisi yang benar di dalam daftar yang sudah terurut.
Contoh program;
Input
def insertion_sort(arr):
n = len(arr)
# Mulai dari elemen kedua
for i in range(1, n):
key = arr[i] # Elemen yang akan disisipkan
j = i - 1
# Geser elemen yang lebih besar dari key ke kanan
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
# Letakkan key di posisi yang benar
arr[j + 1] = key
return arr
# Contoh penggunaan
arr = [12, 11, 13, 5, 6]
print("Sebelum pengurutan:", arr)
sorted_arr = insertion_sort(arr)
print("Setelah pengurutan:", sorted_arr)
Output
Sebelum pengurutan: [12, 11, 13, 5, 6]
Setelah pengurutan: [5, 6, 11, 12, 13]
4. Merge Sort
Merge Sort adalah algoritma pengurutan yang menggunakan prinsip Divide and Conquer (Bagi dan Taklukkan). Algoritma ini membagi daftar (array atau list) menjadi dua bagian, mengurutkan masing-masing bagian secara rekursif, dan kemudian menggabungkan (merge) kedua bagian yang sudah terurut tersebut untuk mendapatkan hasil yang terurut secara keseluruhan.
Contoh Implementasi proses Merge Sort pada Program Phyton;
Input
def merge_sort(arr):
# Basis rekursif: jika panjang array <= 1, sudah terurut
if len(arr) <= 1:
return arr
# Pembagian array menjadi dua bagian
mid = len(arr) // 2
left_half = merge_sort(arr[:mid]) # Bagian kiri
right_half = merge_sort(arr[mid:]) # Bagian kanan
# Penggabungan kedua bagian
return merge(left_half, right_half)
def merge(left, right):
sorted_arr = []
i = j = 0
# Gabungkan dua array terurut
while i < len(left) and j < len(right):
if left[i] < right[j]:
sorted_arr.append(left[i])
i += 1
else:
sorted_arr.append(right[j])
j += 1
# Jika ada elemen yang tersisa di salah satu array, tambahkan ke hasil
sorted_arr.extend(left[i:])
sorted_arr.extend(right[j:])
return sorted_arr
# Contoh penggunaan
arr = [38, 27, 43, 3, 9, 82, 10]
print("Sebelum pengurutan:", arr)
sorted_arr = merge_sort(arr)
print("Setelah pengurutan:", sorted_arr)
Output
Sebelum pengurutan: [38, 27, 43, 3, 9, 82, 10]
Setelah pengurutan: [3, 9, 10, 27, 38, 43, 82]
5. Quick Sort
Quick Sort adalah algoritma pengurutan yang sangat efisien dan juga termasuk dalam kategori algoritma Divide and Conquer (Bagi dan Taklukkan). Prinsip kerja algoritma ini adalah dengan memilih satu elemen sebagai pivot, kemudian mengatur elemen-elemen lainnya sehingga elemen yang lebih kecil dari pivot berada di sebelah kiri dan elemen yang lebih besar berada di sebelah kanan pivot. Kemudian, proses ini dilakukan secara rekursif pada subarray kiri dan kanan pivot hingga seluruh daftar terurut.
Contoh Implementasi proses Quick Sort pada Program Phyton;
Input
def quick_sort(arr):
# Basis rekursif: jika panjang array <= 1, sudah terurut
if len(arr) <= 1:
return arr
# Pilih pivot, misalnya elemen terakhir
pivot = arr[-1]
# Pisahkan elemen-elemen ke kiri dan kanan pivot
left = [x for x in arr[:-1] if x <= pivot] # Elemen yang lebih kecil atau sama dengan pivot
right = [x for x in arr[:-1] if x > pivot] # Elemen yang lebih besar dari pivot
# Rekursi untuk subarray kiri dan kanan, dan gabungkan hasilnya
return quick_sort(left) + [pivot] + quick_sort(right)
# Contoh penggunaan
arr = [10, 80, 30, 90, 40, 50, 70]
print("Sebelum pengurutan:", arr)
sorted_arr = quick_sort(arr)
print("Setelah pengurutan:", sorted_arr)
Output
Sebelum pengurutan: [10, 80, 30, 90, 40, 50, 70]
Setelah pengurutan: [10, 30, 40, 50, 70, 80, 90]
Udah taukan ygy? itu aja
Thank You