Penemu Algoritma adalah seorang Ilmuan Islam bernama Al Khawarizmi, seorang jenis yang mahir dalam matematika, geografi, astronomi, dan lain sebagainya, Dalam Bukunya the History of Arab, Phillip K. Hitti menyebut bahwa Al Khawarizky sebagai toko utama pada awal sejarah matematikan Arab.
Pengertian algoritma menurut ahli. Donald Ervin Knuth menyebutkan algoritma adalah sekumpulan aturan-aturan berhingga yang memberikan sederetan operasi-operasi untuk menyelesaikan masalah tertentu.
Menurut Thomas H.Cormen (2009:5), Algoritma adalah prosedur komputasi yang mengambil beberapa nilai atau kumpulan nilai sebagai input kemudian di proses sebagai output sehingga algoritma merupakan urutan langkah komputasi yang mengubah input menjadi output
Algoritma menurut (Kani, 2020) adalah suatu upaya dengan urutan operasi yang disusun secara logis dan sistematis untuk menyelesaikan suatu masalah untuk menghasilkan suatu output tertentu
Untuk mempelajari algoritma pemrograman, berikut adalah beberapa konsep yang perlu kita pelajari.
- Apa itu algoritma : langkah-langkah sistematis untuk memecah masalah
- Notasi algoritma : pseudocode dan diagram alur.
- Sifat-sifat algoritma : efisiensi, kejelasan, ketepatan.
- Arra : Koleksi elemen dengan indeks.
- List, Stack, Queue : Struktur data linier.
- Hash Table : Struktur untuk penyimpanan key-value pairs.
- Tree (Binary Tree, Binary Search Tree) : Struktur data hierarkis.
- Graph : Node yang saling terhubung.
- Sorting Algorithms : Bubble Sort, Merge Sort, Quick Sort.
- Searching Algorithm : Linear Search, Binary Search.
- Recursion : Pemahaman dan aplikasi rekursif dalam pemecahan masalah.
** Algoritma Lanjutan
- Divide and Conquer : Memecah masalah besar menjadi sub-masalah kecil.
- *Dynamic Programming : Menggunakan solusi dari sub-masalah yang telah diselesaikan untuk menyelesaikan masalah yang lebih besar.
- Greedy Algorithm : Mengambil keputusan optimal di setiap langkah tanpa mempertimbangkan langkah selanjutnya.
- Backtracking : Menulusuri semua kemungkinan solusi secara rekursif.
- Mengimplementasi algoritma dalam berbagai bahasa pemrograman (seperti Python, Java, c++, atau kotlin).
- Memecah masalah coding dari yang sederhana hingga yang kompleks.