Antwa CodeAntwaCode Blog

Programming7 menit baca

TheAlgorithms/Python: Semua Algoritma dalam Python

Kumpulan semua algoritma yang diimplementasikan dalam Python.

Baca dalam English

Kenapa Harus Tahu Repositori Ini?

Bagi kamu yang belajar ilmu komputer atau sedang menekuni pemrograman Python, pasti pernah merasa bingung: "Algoritma ini harusnya ditulis kayak gimana sih dalam Python?" Nah, masalah itu terjawab sudah oleh TheAlgorithms/Python — sebuah repositori open source di GitHub yang berisi implementasi hampir semua algoritma yang pernah kamu pelajari di kelas, ditulis dalam bahasa Python.

Dan bukan cuma sekadar "hampir semua". Repositori ini sudah mengumpulkan 224.000+ bintang (ya, dua ratus dua puluh empat ribu!) di GitHub. Artinya, ini bukan proyek abal-abal. Ini adalah salah satu repositori paling populer di seluruh GitHub, bukan hanya di kategori Python.

Gambar: TheAlgorithms/Python di GitHub

TheAlgorithms/Python Gambar: GitHub


Apa Isi Repositori Ini?

Bayangkan kamu punya sebuah perpustakaan digital yang berisi ribuan contoh kode algoritma, mulai dari yang paling dasar seperti bubble sort sampai yang kompleks seperti algoritma genetika atau jaringan syaraf tiruan. Itulah yang ditawarkan oleh TheAlgorithms/Python.

Setiap algoritma diimplementasikan sebagai file Python terpisah dengan:

  • Kode yang bersih dan mudah dibaca — tidak asal jalan, tapi ditulis dengan gaya Pythonic
  • Docstring yang jelas — penjelasan di setiap fungsi tentang apa yang dilakukannya
  • Test cases — banyak yang sudah dilengkapi doctest atau unit test
  • Struktur folder yang terorganisir — algoritma dikategorikan berdasarkan jenisnya

Keren, kan? Jadi kamu tidak perlu lagi googling "how to implement Dijkstra in Python" dan menemukan kode yang tidak jelas asal-usulnya.


Kategori Algoritma yang Tersedia

TheAlgorithms/Python tidak main-main dalam hal kelengkapan. Berikut adalah beberapa kategori utama yang tersedia di dalamnya:

Algoritma Pencarian dan Pengurutan (Sorting & Searching)

Ini adalah fondasi dari semua ilmu komputer. Di sini kamu akan menemukan:

  • Bubble Sort — pengurutan paling sederhana, cocok untuk pemula
  • Quick Sort — pengurutan cepat berbasis divide and conquer
  • Merge Sort — pengurutan stabil yang terjamin O(n log n)
  • Insertion Sort — efisien untuk data yang hampir terurut
  • Heap Sort — memanfaatkan struktur data heap
  • Binary Search — pencarian cepat pada array terurut
  • Linear Search — pencarian dasar satu per satu
  • Tim Sort — kombinasi insertion sort dan merge sort, algoritma default di Python!

Struktur Data (Data Structures)

Algoritma tanpa struktur data itu bagai sayur tanpa garam. Di folder data_structures/ kamu akan menemukan implementasi:

  • Linked List — singly dan doubly linked
  • Stack dan Queue — struktur data LIFO dan FIFO
  • Binary Tree — pohon biner dengan traversal berbagai cara
  • Graph — representasi graph dengan adjacency list dan matrix
  • Hash Table — implementasi hash map dari nol
  • Heap — min heap dan max heap
  • Trie — pohon prefix untuk pencarian string efisien

Pemrograman Dinamis (Dynamic Programming)

Ini adalah salah satu kategori terbesar di repositori ini. Dynamic programming memang terkenal menantang, dan having contoh kode yang jelas sangat membantu:

  • Fibonacci — klasik tapi fundamental
  • Knapsack Problem — optimasi pemilihan item
  • Longest Common Subsequence — perbandingan string
  • Edit Distance — menghitung perbedaan antara dua string
  • Matrix Chain Multiplication — optimasi perkalian matriks
  • Coin Change — problema uang kembalian

Algoritma Graf (Graph Algorithms)

Graf adalah struktur data yang powerful banget. Di sini ada:

  • Dijkstra — pencarian jalur terpendek dengan bobot positif
  • Bellman-Ford — pencarian jalur terpendek yang bisa menangani bobot negatif
  • Breadth-First Search (BFS) — pencarian level per level
  • Depth-First Search (DFS) — pencarian ke kedalaman dulu
  • Kruskal dan Prim — minimum spanning tree
  • Topological Sort — pengurutan berdasarkan dependensi

Kriptografi (Ciphers)

Kalau kamu tertarik dengan keamanan siber, kategori ciphers/ menyediakan implementasi:

  • Caesar Cipher — enkripsi sederhana dengan pergeseran huruf
  • Vigenère Cipher — enkripsi dengan kunci bergulir
  • RSA — enkripsi asimetris yang mengamankan internet
  • AES — standar enkripsi simetris
  • SHA-256 — fungsi hash kriptografi

Matematika dan Statistika

  • Fibonacci Sequence — berbagai cara menghitung
  • Prima (Prime Numbers) — sieve of Eratosthenes dan lainnya
  • Factorial — rekursif dan iteratif
  • GCD (Greatest Common Divisor) — algoritma Euclidean
  • Matematika Linear — operasi matriks, determinan, dan invers

Machine Learning dan AI

Ya, kamu tidak salah baca. Repositori ini juga punya kategori untuk machine learning:

  • K-Nearest Neighbors (KNN) — klasifikasi berbasis tetangga terdekat
  • Linear Regression — regresi linier sederhana
  • Naive Bayes — klasifikasi probabilistik
  • Neural Network — implementasi jaringan syaraf dari nol
  • K-Means Clustering — pengelompokan data tanpa label

Kategori Lainnya

  • Backtracking — penyelesaian masalah dengan pencarian回溯
  • Bit Manipulation — operasi pada tingkat bit
  • Blockchain — konsep dasar blockchain
  • Cellular Automata — simulasi sistem kompleks
  • Conversions — konversi bilangan dan satuan
  • Digital Image Processing — pemrosesan gambar digital
  • Electronics — algoritma untuk elektronika
  • Fractals — pola matematika rekursif
  • Genetic Algorithm — optimasi berbasis evolusi
  • Geodesic — perhitungan geografi
  • Web Programming — algoritma untuk web

Kode Contoh: Bubble Sort

Nah, biar tidak cuma teori, mari kita lihat contoh implementasi Bubble Sort dari repositori ini. Ini adalah salah satu algoritma pengurutan paling dasar:

def bubble_sort(arr):
    """
    Mengurutkan array menggunakan algoritma Bubble Sort.
 
    Algoritma ini bekerja dengan cara membandingkan dua elemen
    yang bersebelahan dan menukarnya jika urutannya salah.
    Proses ini diulang sampai tidak ada lagi pertukaran.
 
    Contoh:
    >>> bubble_sort([4, 2, 7, 1, 3])
    [1, 2, 3, 4, 7]
 
    >>> bubble_sort([1, 2, 3])
    [1, 2, 3]
 
    >>> bubble_sort([])
    []
 
    >>> bubble_sort([1])
    [1]
    """
    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
    return arr

Perhatikan beberapa hal keren dari kode ini:

  1. Docstring lengkap — ada penjelasan, cara kerja, dan contoh penggunaan
  2. Optimasi swapped — jika tidak ada pertukaran, berarti array sudah terurut
  3. Kode Pythonic — penggunaan tuple unpacking untuk pertukaran (a, b = b, a)
  4. Doctest — bisa langsung dijalankan dengan python -m doctest


Mengapa Repositori Ini Sangat Berharga?

1. Belajar dari Kode Orang Lain

Salah satu cara terbaik belajar programming adalah dengan membaca kode orang lain. TheAlgorithms/Python memberikan kamu akses ke ratusan contoh kode algoritma yang ditulis oleh komunitas programmer dari seluruh dunia.

2. Cocok untuk Persiapan Interview

Kalau kamu sedang mempersiapkan wawancara kerja di perusahaan teknologi, repo ini adalah harta karun. Banyak pertanyaan interview yang berkaitan dengan algoritma dan struktur data, dan semua jawabannya ada di sini.

3. Referensi untuk Tugas Kuliah

Mahasiswa ilmu komputer pasti akrab dengan mata kuliah Struktur Data dan Algoritma. Repo ini bisa jadi referensi yang sangat membantu untuk memahami konsep-konsep yang diajarkan di kelas.

4. Berlisensi MIT

Semua kode di repositori ini dilisensikan di bawah MIT License, yang berarti kamu bisa bebas menggunakannya untuk proyek pribadi maupun komersial. Tidak ada batasan yang signifikan.

5. Komunitas Aktif

Dengan 3.670+ commit dan kontributor dari seluruh dunia, repositori ini terus diperbarui dan ditingkatkan. Ada juga pull request yang menunggu review, yang artinya komunitasnya masih sangat aktif.


Bagaimana Cara Menggunakan Repositori Ini?

Cara 1: Clone dan Jalankan

# Clone repositori
git clone https://github.com/TheAlgorithms/Python.git
 
# Masuk ke direktori
cd Python
 
# Jalankan salah satu algoritma
python sorts/bubble_sort.py

Cara 2: Cari Langsung di GitHub

Kamu bisa langsung mencari algoritma tertentu di GitHub tanpa perlu clone. Misalnya, cari dijkstra di search bar GitHub, atau buka langsung folder yang relevan.

Cara 3: Jalankan dengan Doctest

Banyak file di repositori ini sudah dilengkapi doctest. Kamu bisa menjalankannya dengan:

python -m doctest sorts/bubble_sort.py -v

Outputnya akan menunjukkan apakah setiap contoh dalam docstring berjalan dengan benar.

Cara 4: Gunakan sebagai Library

Kamu juga bisa mengimpor fungsi-fungsi dari repositori ini ke proyekmu sendiri:

import sys
sys.path.insert(0, '/path/to/Python')
from sorts.bubble_sort import bubble_sort
 
data = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(data))
# Output: [11, 12, 22, 25, 34, 64, 90]

Tips Belajar dari TheAlgorithms/Python

Mulai dari yang Sederhana

Jangan langsung terjun ke algoritma yang kompleks. Mulailah dari yang dasar:

  1. Sorting algorithms — pahami bagaimana data diurutkan
  2. Searching algorithms — pahami cara mencari data
  3. Basic data structures — linked list, stack, queue
  4. Graph algorithms — setelah memahami data structures
  5. Dynamic programming — ini yang paling menantang

Baca Docstring dengan Seksama

Setiap file di repositori ini memiliki docstring yang menjelaskan cara kerja algoritma. Jangan skip bagian ini! Docstring biasanya berisi:

  • Penjelasan tentang algoritma
  • Kompleksitas waktu dan ruang
  • Contoh penggunaan
  • Kapan algoritma ini harus digunakan

Jalankan dan Eksperimen

Jangan cuma baca kode. Jalankan! Modifikasi! Lihat apa yang terjadi. Misalnya, coba jalankan bubble sort dengan array yang sudah terurut, terurut terbalik, atau dengan elemen duplikat. Kamu akan belajar lebih banyak dengan eksperimen langsung.

Bandingkan Algoritma

Coba jalankan beberapa algoritma pengurutan yang berbeda dengan data yang sama. Ukur waktunya dengan timeit:

import timeit
 
data = list(range(1000, 0, -1))
 
# Bandingkan waktu
bubble_time = timeit.timeit(
    'bubble_sort(data[:])',
    globals=globals(),
    number=100
)
 
quick_time = timeit.timeit(
    'quick_sort(data[:])',
    globals=globals(),
    number=100
)
 
print(f"Bubble Sort: {bubble_time:.4f}s")
print(f"Quick Sort: {quick_time:.4f}s")

Kamu akan melihat perbedaan performa yang signifikan!


Kontribusi ke Repositori Ini

TheAlgorithms/Python adalah proyek open source, dan mereka selalu menyambut kontribusi baru. Jika kamu ingin berkontribusi, berikut langkah-langkahnya:

  1. Fork repositori di GitHub
  2. Buat branch baru untuk fitur atau perbaikanmu
  3. Tulis kode dengan gaya yang konsisten dengan repositori
  4. Tambahkan doctest untuk memastikan kode berjalan dengan benar
  5. Jalankan pre-commit hooks untuk memastikan kode sesuai standar
  6. Buat pull request dan jelaskan perubahanmu

Pastikan untuk membaca CONTRIBUTING.md terlebih dahulu agar kontribusimu diterima oleh maintainer.


Statistik Repositori yang Mengagumkan

Mari kita lihat beberapa angka yang menunjukkan betapa besar dan aktifnya repositori ini:

StatistikAngka
⭐ Bintang224.000+
🍴 Fork51.000+
📝 Commit3.670+
🌿 Branch10
📋 Open Issues143
🔀 Open Pull Requests887
📜 LisensiMIT

Angka-angka ini menunjukkan bahwa TheAlgorithms/Python bukan sekadar repositori yang dibuat lalu ditinggalkan. Ini adalah proyek hidup yang terus berkembang berkat kontribusi dari ribuan programmer di seluruh dunia.


Komunitas dan Ekosistem

TheAlgorithms tidak hanya memiliki versi Python. Organisasi ini juga menyediakan implementasi dalam Java, JavaScript, C++, C#, Go, dan Rust. Jadi, tidak peduli bahasa pemrograman apa yang kamu gunakan, TheAlgorithms punya versi untukmu.


Kesimpulan

TheAlgorithms/Python adalah repositori yang wajib diketahui oleh setiap programmer Python. Dengan 224.000+ bintang di GitHub, ini bukan sekadar koleksi kode — ini adalah sumber belajar algoritma dan struktur data yang paling komprehensif dan mudah diakses.

Apakah kamu seorang mahasiswa yang sedang belajar algoritma, programmer yang ingin mempersiapkan wawancara kerja, atau sekadar ingin memperdalam pemahaman tentang ilmu komputer, repositori ini memiliki sesuatu untukmu.

Jangan cuma bookmark repositorinya — clone, baca kodenya, jalankan, dan eksperimen! Itu adalah cara terbaik untuk benar-benar memahami algoritma.


Artikel ini ditulis untuk membantu programmer Indonesia menemukan sumber belajar algoritma yang berkualitas. Jika kamu merasa terbantu, jangan lupa untuk memberikan bintang ⭐ di GitHub dan membagikan artikel ini ke teman-temanmu!

Tulisan lain