Struktur & Algoritma Data dengan Python: Semua yang Perlu Anda Ketahui

Diterbitkan: 2020-05-06

Struktur data dan algoritma dalam Python adalah dua konsep paling mendasar dalam ilmu komputer. Mereka adalah alat yang sangat diperlukan untuk setiap programmer. Struktur data dalam Python berurusan dengan organisasi dan penyimpanan data dalam memori saat sebuah program memprosesnya. Di sisi lain, algoritma Python mengacu pada set instruksi terperinci yang membantu dalam pemrosesan data untuk tujuan tertentu.

Sebagai alternatif, dapat dikatakan bahwa struktur data yang berbeda secara logis digunakan oleh algoritme untuk menyelesaikan masalah analisis data tertentu. Baik itu masalah dunia nyata atau pertanyaan terkait pengkodean yang khas, pemahaman tentang struktur data dan algoritme dalam Python sangat penting jika Anda ingin menemukan solusi yang akurat. Pada artikel ini, Anda akan menemukan diskusi mendetail tentang berbagai algoritma dan struktur data Python. Jika Anda tertarik untuk mempelajari lebih lanjut tentang Python, lihat kursus ilmu data kami.

Pelajari lebih lanjut: Enam Struktur Data Yang Paling Umum Digunakan di R

Daftar isi

Apa itu struktur data dalam Python?

Struktur data adalah cara mengatur dan menyimpan data; mereka menjelaskan hubungan antara data dan berbagai operasi logis yang dapat dilakukan pada data. Ada banyak cara di mana struktur data dapat diklasifikasikan. Salah satu caranya adalah dengan mengkategorikannya menjadi tipe data primitif dan non-primitif.

Sementara tipe data primitif termasuk Integer, Float, Strings dan Boolean, tipe data non-primitif adalah Array, Daftar, Tuple, Kamus, Set dan File. Beberapa tipe data non-primitif ini, seperti Daftar, Tuple, Kamus, dan Set, sudah ada di dalam Python. Ada kategori lain dari struktur data dalam Python yang ditentukan oleh pengguna; yaitu, pengguna mendefinisikannya. Ini termasuk Stack, Queue, Linked List, Tree, Graph dan HashMap.

Struktur data primitif

Ini adalah struktur data dasar dalam Python yang berisi nilai data murni dan sederhana dan berfungsi sebagai blok pembangun untuk memanipulasi data. Mari kita bicara tentang empat tipe variabel primitif dengan Python:

  • Integer – Tipe data ini digunakan untuk mewakili data numerik, yaitu bilangan bulat positif atau negatif tanpa titik desimal. Katakanlah, -1, 3, atau 6.
  • Float – Float menandakan 'bilangan real floating-point.' Ini digunakan untuk mewakili bilangan rasional, biasanya berisi titik desimal seperti 2,0 atau 5,77. Karena Python adalah bahasa pemrograman yang diketik secara dinamis, tipe data yang disimpan objek dapat berubah, dan tidak perlu menyatakan tipe variabel Anda secara eksplisit.
  • String – Tipe data ini menunjukkan kumpulan alfabet, kata, atau karakter alfanumerik. Itu dibuat dengan memasukkan serangkaian karakter dalam sepasang tanda kutip ganda atau tunggal. Untuk menggabungkan dua atau lebih String, operasi '+' dapat diterapkan padanya. Pengulangan, penyambungan, kapitalisasi, dan pengambilan adalah beberapa operasi String lainnya di Python. Contoh: 'biru', 'merah', dll.
  • Boolean – Tipe data ini berguna dalam perbandingan dan ekspresi kondisional dan dapat mengambil nilai TRUE atau FALSE.

Ketahui lebih banyak: Bingkai Data dengan Python

Struktur data non-primitif bawaan

Berbeda dengan struktur data primitif, tipe data non-primitif tidak hanya menyimpan nilai, tetapi kumpulan nilai dalam format yang berbeda. Mari kita lihat struktur data non-primitif dengan Python:

    • Daftar – Ini adalah struktur data paling serbaguna dalam Python dan ditulis sebagai daftar elemen yang dipisahkan koma yang diapit dalam tanda kurung siku. Sebuah Daftar dapat terdiri dari elemen heterogen dan homogen. Beberapa metode yang berlaku pada Daftar adalah index(), append(), extend(), insert(), remove(), pop(), dll. Daftar bisa berubah; yaitu, isinya dapat diubah, menjaga identitas tetap utuh.

Sumber

  • Tuples – Tuples mirip dengan Lists tetapi tidak dapat diubah. Juga, tidak seperti Daftar, Tuple dideklarasikan dalam tanda kurung, bukan tanda kurung siku. Fitur kekekalan menunjukkan bahwa sekali elemen telah didefinisikan dalam Tuple, itu tidak dapat dihapus, ditugaskan kembali atau diedit. Ini memastikan bahwa nilai yang dideklarasikan dari struktur data tidak dimanipulasi atau diganti.

Sumber

  • Kamus – Kamus terdiri dari pasangan nilai kunci. 'Kunci' mengidentifikasi item, dan 'nilai' menyimpan nilai item. Tanda titik dua memisahkan kunci dari nilainya. Item dipisahkan dengan koma, dengan semuanya diapit dalam tanda kurung kurawal. Meskipun kunci tidak dapat diubah (angka, String, atau Tuple), nilainya dapat berupa jenis apa pun.

Sumber

  • Set – Set adalah kumpulan elemen unik yang tidak berurutan. Seperti Daftar, Set bisa berubah dan ditulis dalam tanda kurung siku, tetapi tidak ada dua nilai yang bisa sama. Beberapa metode Set termasuk count(), index(), any(), all(), dll.

Sumber

  • Daftar vs. Array – Tidak ada konsep built-in Arrays di Python. Array dapat diimpor menggunakan paket NumPy sebelum menginisialisasinya. Untuk mengetahui lebih banyak tentang NumPy, seseorang dapat memeriksa tutorial python NumPy kami . Daftar dan Array sebagian besar serupa kecuali satu perbedaan – sementara Array adalah kumpulan hanya elemen homogen, Daftar mencakup item homogen dan heterogen.

Checkout: Jenis Pohon Biner

Struktur data yang ditentukan pengguna dengan Python

Selanjutnya dalam diskusi kami tentang struktur data dan algoritme di Python adalah ikhtisar singkat tentang berbagai struktur data yang ditentukan pengguna:

  • Tumpukan – Tumpukan adalah struktur data linier dengan Python. Menyimpan item dalam Tumpukan didasarkan pada prinsip First-In/Last-Out (FILO) atau Last-In/First-Out (LIFO). Di Tumpukan, penambahan elemen baru di satu ujung disertai dengan penghapusan elemen dari ujung yang sama. Operasi 'push' dan 'pop' digunakan untuk penyisipan dan penghapusan, masing-masing. Fungsi lain yang terkait dengan Stack adalah empty(), size() dan top(). Tumpukan dapat diimplementasikan menggunakan modul dan struktur data dari pustaka Python – list, collections.deque, dan queue.LifoQueue.
  • Antrian – Mirip dengan Tumpukan, Antrian adalah struktur data linier. Namun, barang disimpan berdasarkan prinsip First In/ First Out (FIFO). Dalam Antrian, item yang paling terakhir ditambahkan akan dihapus terlebih dahulu. Operasi yang terkait dengan Antrian meliputi Enqueue (menambahkan elemen), Dequeue (menghapus elemen), Depan dan Belakang. Seperti Stacks, Queues dapat diimplementasikan menggunakan modul dan struktur data dari library Python – list, collections.deque, dan queue.
  • Pohon – Pohon adalah struktur data non-linier dalam Python dan terdiri dari simpul yang dihubungkan oleh tepi. Sifat-sifat Pohon adalah satu simpul ditunjuk sebagai simpul akar, selain akar, setiap simpul lain memiliki simpul induk yang terkait, dan setiap simpul dapat memiliki jumlah simpul anak yang berubah-ubah. Struktur data Pohon biner adalah struktur yang elemennya tidak lebih dari dua anak.
  • Daftar Tertaut – Serangkaian elemen data yang digabungkan melalui tautan disebut sebagai Daftar Tertaut dengan Python. Ini juga merupakan struktur data linier. Setiap elemen data dalam Linked List terhubung ke elemen lain menggunakan pointer. Karena pustaka Python tidak berisi Daftar Tertaut, mereka diimplementasikan menggunakan konsep node. Linked List memiliki keunggulan dibandingkan Array dalam memiliki ukuran yang dinamis, dengan kemudahan memasukkan/menghapus elemen.
  • Graph – Graph dalam Python secara bergambar mewakili sekumpulan objek, dengan beberapa pasangan objek yang dihubungkan oleh tautan. Simpul mewakili objek yang saling berhubungan, dan tautan yang bergabung dengan simpul disebut sebagai tepi. Tipe data kamus Python dapat digunakan untuk menyajikan grafik. Intinya, 'kunci' kamus mewakili simpul, dan 'nilai' menunjukkan koneksi atau tepi antara simpul.
  • HashMaps/Hash Tables – Dalam jenis struktur data ini, fungsi Hash menghasilkan alamat atau nilai indeks dari elemen data. Nilai indeks berfungsi sebagai kunci nilai data yang memungkinkan akses data lebih cepat. Seperti dalam tipe data kamus, Tabel Hash memiliki pasangan nilai kunci, tetapi fungsi hashing menghasilkan kunci.

Apa itu algoritma dalam Python?

Algoritma Python adalah sekumpulan instruksi yang dieksekusi untuk mendapatkan solusi dari masalah yang diberikan. Karena algoritma tidak spesifik bahasa, mereka dapat diimplementasikan dalam beberapa bahasa pemrograman. Tidak ada aturan standar yang memandu penulisan algoritma. Mereka bergantung pada sumber daya dan masalah tetapi berbagi beberapa konstruksi kode umum, seperti flow-control (if-else) dan loop (do, while, for). Pada bagian berikut, kita akan membahas secara singkat Tree Traversal, Sorting, Searching, dan Graph Algorithms.

Algoritma Traversal Pohon

Traversal adalah proses mengunjungi semua node dari sebuah Tree, dimulai dari root node. Sebuah Pohon dapat dilalui dengan tiga cara berbeda:

– Traversal berurutan melibatkan mengunjungi subpohon di sebelah kiri terlebih dahulu, diikuti oleh akar, dan kemudian subpohon kanan.

– Dalam traversal pre-order, yang pertama dikunjungi adalah simpul akar, diikuti oleh subpohon kiri, dan terakhir, subpohon kanan.

– Dalam algoritma traversal post-order, subpohon kiri dikunjungi terlebih dahulu, kemudian subpohon kanan dikunjungi, dengan simpul akar dikunjungi terakhir.

Pelajari lebih lanjut: Cara Membuat Pohon Keputusan Sempurna

Algoritma pengurutan

Algoritma pengurutan menunjukkan cara untuk mengatur data dalam format tertentu. Penyortiran memastikan bahwa pencarian data dioptimalkan ke tingkat tinggi dan bahwa data disajikan dalam format yang dapat dibaca. Mari kita lihat lima jenis algoritma Sorting dengan Python:

  • Bubble Sort – Algoritma ini didasarkan pada perbandingan di mana ada pertukaran berulang elemen yang berdekatan jika mereka berada dalam urutan yang salah.
  • Merge Sort – Berdasarkan algoritma bagi dan taklukkan, Merge sort membagi Array menjadi dua bagian, mengurutkannya, dan kemudian menggabungkannya.
  • Insertion Sort – Penyortiran ini dimulai dengan membandingkan dan menyortir dua elemen pertama. Kemudian, elemen ketiga dibandingkan dengan dua elemen yang diurutkan sebelumnya dan seterusnya.
  • Shell Sort – Ini adalah bentuk Insertion sort, tapi di sini, elemen yang jauh diurutkan. Sub-daftar besar dari daftar yang diberikan diurutkan, dan ukuran daftar secara bertahap dikurangi sampai semua elemen diurutkan.
  • Seleksi Sort – Algoritma ini dimulai dengan mencari nilai minimum dari daftar elemen dan memasukkannya ke dalam daftar yang diurutkan. Proses ini kemudian diulang untuk setiap elemen yang tersisa dalam daftar yang tidak disortir. Elemen baru yang memasuki daftar yang diurutkan dibandingkan dengan elemen yang ada dan ditempatkan pada posisi yang benar. Proses berlangsung sampai semua elemen diurutkan.

Mencari Algoritma

Algoritma pencarian membantu dalam memeriksa dan mengambil elemen dari struktur data yang berbeda. Salah satu jenis algoritma pencarian menerapkan metode pencarian sekuensial di mana daftar dilalui secara berurutan, dan setiap elemen diperiksa (pencarian linier). Dalam jenis lain, pencarian interval, elemen dicari dalam struktur data yang diurutkan (pencarian biner). Mari kita lihat beberapa contohnya:

  • Pencarian Linear – Dalam algoritma ini, setiap item dicari satu per satu secara berurutan.
  • Pencarian Biner – Interval pencarian berulang kali dibagi dua. Jika elemen yang akan dicari lebih rendah dari komponen pusat interval, interval dipersempit ke bagian bawah. Kalau tidak, itu menyempit ke bagian atas. Proses ini diulang sampai nilai ditemukan.

Algoritma Grafik

Ada dua metode melintasi grafik menggunakan tepinya. Ini adalah:

  • Depth-first Traversal (DFS) – Dalam algoritme ini, sebuah grafik dilintasi dalam gerakan yang lebih dalam. Ketika setiap iterasi menghadapi jalan buntu, tumpukan digunakan untuk pergi ke simpul berikutnya dan memulai pencarian. DFS diimplementasikan dengan Python menggunakan tipe data yang ditetapkan.
  • Breadth-first Traversal (BFS) – Dalam algoritma ini, sebuah graf dilintasi dalam gerakan melebar. Ketika setiap iterasi menghadapi jalan buntu, antrian digunakan untuk pergi ke simpul berikutnya dan memulai pencarian. BFS diimplementasikan dengan Python menggunakan struktur data antrian.

Analisis Algoritma

  • A Priori Analysis – Ini merupakan analisis teoritis dari algoritma sebelum implementasinya. Efisiensi algoritme diukur dengan menganggap bahwa faktor-faktor, seperti kecepatan prosesor, adalah konstan dan tidak memiliki konsekuensi pada algoritme.
  • A Analisis Posterior – Ini mengacu pada analisis empiris dari algoritma setelah implementasinya. Bahasa pemrograman digunakan untuk mengimplementasikan algoritma yang dipilih, diikuti dengan eksekusinya di komputer. Analisis ini mengumpulkan statistik, seperti waktu dan ruang yang diperlukan untuk menjalankan algoritme.

Kesimpulan

Apakah Anda seorang veteran dalam pemrograman atau baru mengenalnya, Anda tidak dapat mengabaikan struktur data dan algoritme di Python . Konsep-konsep ini sangat penting ketika Anda melakukan operasi pada data, dan Anda perlu mengoptimalkan pemrosesan data. Sementara struktur data membantu dalam mengatur informasi, algoritma memberikan pedoman untuk memecahkan masalah analisis data. Bersama-sama, mereka menyediakan cara bagi ilmuwan komputer untuk memproses informasi yang diberikan sebagai data masukan.

Jika Anda penasaran untuk belajar tentang ilmu data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan pakar industri, 1 -on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.

Berapa hari yang dibutuhkan untuk mempelajari Struktur & Algoritma Data?

Ketika datang ke Ilmu Komputer, Struktur Data dan Algoritma dianggap sebagai topik tersulit dari semuanya. Tapi, mereka sangat penting untuk dipelajari bagi setiap programmer. Jika Anda menghabiskan sekitar 3-4 jam setiap hari, maka Anda akan memerlukan setidaknya 6 hingga 8 minggu untuk mempelajari struktur data dan algoritme.

Tidak ada garis waktu yang kaku di sini karena itu akan sepenuhnya bergantung pada kecepatan dan kemampuan belajar Anda. Jika Anda pandai memahami dasar-dasarnya, maka Anda akan merasa cukup mudah untuk memahami konsep mendalam tentang struktur data dan algoritme.

Apa saja jenis-jenis algoritma?

Algoritma adalah prosedur langkah demi langkah yang harus diikuti untuk memecahkan masalah apa pun. Masalah yang berbeda membutuhkan algoritma yang berbeda untuk menyelesaikan masalah. Setiap programmer memilih algoritma untuk memecahkan masalah tertentu berdasarkan persyaratan dan kecepatan algoritma.

Namun, ada algoritma top tertentu yang biasanya dipertimbangkan oleh programmer untuk memecahkan masalah yang berbeda. Beberapa algoritma yang terkenal adalah algoritma Brute force, algoritma Greedy, algoritma Randomized, algoritma Dynamic programming, algoritma Recursive, algoritma Divide & Conquer, dan algoritma Backtracking.

Apa kegunaan utama Python?

Python adalah bahasa pemrograman tujuan umum yang digunakan untuk melakukan berbagai aktivitas. Hal terbaik tentang Python adalah tidak terikat pada aplikasi tertentu, dan Anda dapat menggunakannya sesuai kebutuhan Anda. Karena ketersediaan perpustakaan, keserbagunaan, dan struktur yang mudah dipahami, ini dianggap sebagai salah satu bahasa pemrograman yang paling banyak digunakan di kalangan pengembang.

Python sebagian besar digunakan untuk pengembangan situs web dan perangkat lunak. Selain itu, juga digunakan untuk otomatisasi tugas, visualisasi data, dan analisis data. Python cukup mudah dipelajari, dan inilah mengapa bahkan non-programmer mengadopsi bahasa ini untuk mengatur keuangan dan melakukan tugas sehari-hari lainnya.