Struktur data adalah cara memformat data sehingga dapat digunakan oleh program komputer atau sistem lain. Struktur data adalah komponen fundamental dari ilmu komputer karena memberikan bentuk pada titik data abstrak. Dengan cara ini, mereka memungkinkan pengguna dan sistem untuk mengatur, bekerja dengan data, dan menyimpan data secara efisien.
Struktur data menggabungkan tipe data primitif seperti angka, karakter, Boolean, dan bilangan bulat ke dalam format yang kohesif. Secara terpisah, masing-masing tipe data primitif ini hanya memiliki satu nilai. Ketika digabungkan dalam struktur data, mereka memungkinkan operasi data tingkat yang lebih tinggi seperti penyortiran, pencarian, penyisipan, dan penghapusan.
Misalnya, pertimbangkan tim penjualan yang ingin melacak angka penjualan harian. Alih-alih mencatat setiap titik data secara terpisah, tim dapat menyimpan data ini dalam suatu jenis struktur data yang disebut "array." (Untuk informasi lebih lanjut, lihat “Jenis struktur data”).
Dalam Python, array mungkin terlihat seperti ini:
Menggunakan array memungkinkan tim untuk menyimpan semua data ini bersama-sama, dengan mudah mengambil titik data saat diperlukan dan menjalankan fungsi pada tiap elemen maupun seluruh array.
Programer komputer mengandalkan struktur data untuk membangun aplikasi yang efektif. Di bidang ilmu komputer dan ilmu data, struktur data sangat penting pada sistem operasi, basis data, situs web, grafik,analitik, blockchain, aplikasi machine learning (ML), dan banyak lagi.
Karena struktur data merupakan hal yang mendasar dalam menulis kode yang efektif, mereka sering kali menjadi salah satu pelajaran pertama yang diajarkan kepada para pemula dalam pemrograman. Mereka juga merupakan topik umum pertanyaan wawancara untuk kandidat pekerjaan programer komputer.
Struktur data penting karena lebih memudahkan komputer untuk memproses kumpulan informasi yang besar dan kompleks. Dengan mengatur elemen data secara logis, struktur data meningkatkan efisiensi kode komputer dan membuat kode lebih mudah dipahami.
Programer menggunakan struktur data untuk meningkatkan kecepatan dan kekuatan algoritma yang merupakan serangkaian instruksi untuk menyelesaikan tugas komputasi. Dalam pemrograman komputer, kombinasi ini dikenal sebagai "DSA", singkatan dari "data, struktur, dan algoritma". DSA membantu programer mengatasi tantangan kembar kompleksitas waktu dan ruang.
Kompleksitas waktu adalah ukuran berapa lama waktu yang dibutuhkan algoritma untuk menyelesaikan tugas berdasarkan jumlah input. Kompleksitas ruang adalah ukuran berapa banyak memori yang digunakan algoritma berdasarkan jumlah input.
Dengan menggunakan notasi Big O metrik matematika, programer dapat mengukur kompleksitas ruang dan waktu. Mereka kemudian dapat menentukan struktur data dan algoritma mana yang memberikan waktu proses tercepat dan efisiensi ruang paling besar untuk tugas tertentu.
Struktur data juga memainkan peran penting dalam pemrograman dinamis, sebuah teknik untuk memecahkan masalah yang kompleks dengan cepat.
Pemrograman dinamis menggunakan rekursi untuk memisahkan masalah menjadi komponen yang lebih kecil. Kemudian, program ini menemukan solusi untuk berbagai komponen tersebut dan menyusun kembali subsolusi menjadi solusi lengkap untuk masalah aslinya.
Struktur data memungkinkan pemrograman dinamis dengan memberikan program cara untuk menyimpan dan mengambil setiap subsolusi, dan dengan menjaga elemen data tetap tertata secara logis selama proses berlangsung.
Misalnya, nilai yang dihitung dapat disimpan dalam array. Alih-alih menghitung ulang nilai-nilai ini ketika tiba waktunya untuk merumuskan solusi lengkap, program dapat mengambilnya dari array.
Dengan kemampuan ini, programer dapat menghemat waktu dan memecahkan masalah dengan lebih efisien.
Struktur data dibagi menjadi 2 kategori utama: linier dan nonlinier.
Dalam struktur data linier, data disusun dalam sebuah baris, dengan setiap elemen data ditempatkan satu demi satu secara berurutan. Pengaturan ini memudahkan untuk melintasi dan mengakses elemen secara berurutan.
Struktur data linier dianggap mudah dan sederhana untuk diterapkan. Struktur data umum dalam kategori ini termasuk array, daftar tertaut, dan antrean.
Dalam struktur data nonlinier, logika penataan berbeda dengan pengaturan linear dan berurutan. Misalnya, titik data dapat diurutkan secara hierarkis atau dihubungkan dalam jaringan.
Karena tidak terhubung satu sama lain dalam satu baris, elemen dalam struktur nonlinier tidak dapat dilalui dan diakses dalam satu kali proses, seperti yang dapat dilakukan dalam struktur data linier. Contoh struktur data nonlinier termasuk pohon dan grafik.
Ada beberapa jenis struktur data yang dapat digunakan oleh programer, tergantung pada sistem yang mereka bangun dan apa yang perlu mereka lakukan dengan data tersebut. Struktur data umum meliputi:
Array adalah salah satu jenis struktur data paling dasar dan banyak digunakan. Mereka menyimpan item data dari jenis yang sama di lokasi memori yang berdekatan. Struktur ini memungkinkan penemuan dan akses mudah ke item dari jenis yang sama.
Penggunaan: Penggunaan umum untuk array termasuk menyortir, menyimpan, mencari, dan mengakses data. Array juga dapat digunakan sebagai dasar untuk mengimplementasikan struktur data lain, seperti antrean dan tumpukan.
Contoh: Array rata-rata skor kepuasan pelanggan dari pusat panggilan setiap harinya mungkin terlihat seperti ini:
Struktur data antrean melakukan operasi data dalam urutan yang telah ditentukan sebelumnya yang disebut "FIFO", atau "first in, first out" (masuk pertama, keluar pertama). Ini berarti bahwa item data pertama yang ditambahkan akan menjadi yang pertama dihapus. Programmer sering menggunakan struktur data ini untuk membuat antrean prioritas, yang mirip dengan daftar tunggu.
Penggunaan: Struktur data antrean dapat digunakan untuk menentukan lagu berikutnya dalam daftar putar, pengguna berikutnya yang memiliki akses ke printer bersama, atau panggilan berikutnya yang akan dijawab di pusat panggilan.
Contoh: Pelanggan menunggu untuk berbicara dengan perwakilan pusat panggilan mungkin ditempatkan dalam antrean seperti ini:
Ketika perwakilan tersedia, mereka secara otomatis terhubung dengan pelanggan pertama dalam antrean, yang kemudian dihapus dari daftar. Sekarang, antreannya terlihat seperti ini:
Mirip dengan antrean, struktur data tumpukan melakukan operasi data dalam urutan yang telah ditentukan. Namun, alih-alih FIFO, tumpukan menggunakan format "LIFO", yang merupakan singkatan dari "last in, first out" (terakhir masuk, pertama keluar). Item data terakhir yang ditambahkan akan menjadi yang pertama dihapus.
Penggunaan: Tumpukan dapat digunakan untuk membantu memastikan pembukaan dan penutupan tanda kurung atau tag yang benar dalam kode komputer, melacak riwayat browser terbaru atau membatalkan operasi terbaru dalam aplikasi.
Contoh: Banyak aplikasi menggunakan tumpukan untuk melacak tindakan pengguna sehingga dapat dengan mudah diurungkan. Misalnya, editor teks mungkin menyimpan tumpukan yang terlihat seperti ini:
Saat pengguna menekan tombol "undo" (batalkan), tindakan terbaru dalam tumpukan—"typing 'T'"—dibatalkan. Sekarang, tumpukannya terlihat seperti ini:
Daftar tertaut menyimpan item data dalam urutan linier dengan setiap item terhubung ke item berikutnya dalam daftar. Struktur ini memudahkan penyisipan item baru atau menghapus item yang sudah ada tanpa harus menggeser seluruh kumpulan data.
Penggunaan: Daftar tertaut sering digunakan untuk penyisipan dan penghapusan yang sering terjadi dalam skenario, seperti riwayat browser web, daftar putar pemutar media, dan operasi urungkan atau lakukan kembali dalam aplikasi.
Contoh: Versi sederhana dari daftar video yang ditautkan dalam pemutar media mungkin terlihat seperti ini:
Setiap objek dalam daftar menunjuk ke objek berikutnya, jadi ketika Video 1 selesai, objek ini akan mengarahkan pemutar media untuk memulai Video 2.
Struktur data pohon, terkadang disebut pohon awalan, berguna untuk membangun hubungan hierarkis di antara elemen data. Satu node berada di bagian atas struktur pohon, dengan subnode anak bercabang di tingkat berikutnya di bawahnya.
Kelas pohon yang berbeda, seperti pohon pencarian biner, pohon AVL, dan pohon-b, memiliki sifat yang berbeda dan mendukung fungsi yang berbeda. Misalnya, dalam pohon pencarian biner, setiap node memiliki paling banyak 2 anak. Struktur ini membantu mendukung pencarian cepat kumpulan data.
Penggunaan: Pohon sering digunakan untuk menunjukkan hierarki dalam peta organisasi, sistem file, sistem nama domain, pengindeksan basis data, dan struktur keputusan dalam aplikasi machine learning.
Contoh:
Struktur data grafik mengatur hubungan antara objek yang berbeda dengan menggunakan verteks dan garis penghubung. Verteks adalah titik data "yang ditunjukkan" oleh titik dan garis penghubung adalah garis yang menghubungkan verteks.
Misalnya, pada peta, kota-kota akan menjadi verteks dan jalan yang menghubungkannya akan menjadi garis penghubung. Di Facebook, pengguna akan menjadi verteks dan persahabatan yang menghubungkan mereka akan menjadi garis penghubung.
Penggunaan: Struktur data grafik sering digunakan dengan algoritma pencarian yang mencari data dalam jaringan hubungan yang kompleks. Contoh umum meliputi pencarian breadth-first yang mencari melalui data tingkat demi tingkat dan pencarian depth-first yang menelusuri beberapa tingkat data untuk menemukan informasi.
Contoh:
Struktur data hash, terkadang disebut "tabel hash" atau "peta hash" menggunakan fungsi hash untuk menyimpan nilai data. Fungsi hash menciptakan hash, yang merupakan kunci digital unik yang sesuai dengan lokasi nilai data tertentu dalam memori.
Tabel hash berisi indeks yang dapat dicari dari setiap pasangan nilai hash dan data, yang membuatnya cepat dan mudah untuk mengakses, menambahkan, dan menghapus data dari tabel.
Kegunaan: Struktur data hash dapat membantu mengambil data dengan cepat dari buku telepon, kamus, dan direktori personel. Mereka juga dapat digunakan untuk membuat indeks basis data, menyimpan kata sandi, dan menyeimbangkan beban sistem TI.
Contoh: Versi sederhana dari tabel hash yang menata daftar kontak ponsel pintar mungkin terlihat seperti ini:
Fungsi hash memetakan setiap kunci ke indeks yang sesuai. Jadi, ketika pengguna memasukkan kunci (nama kontak), tabel hash menampilkan nilai terkait pada indeks yang sama (nomor kontak).
Struktur data sangat penting dalam mendesain aplikasi perangkat lunak karena mengimplementasikan bentuk konkret dari tipe data abstrak.
Tipe data abstrak adalah model matematika yang mengklasifikasikan bagaimana tipe data berperilaku dan operasi yang dapat dilakukan padanya. Misalnya, tipe data abstrak dari antrean mendefinisikan perilaku antrean (mengikuti prinsip FIFO). Struktur data antrean memberikan cara untuk memformat data ke dalam antrean, sehingga program komputer menerapkan prinsip FIFO pada data tersebut.
Banyak bahasa pemrograman, seperti Python, Java, dan JavaScript, menyertakan struktur data bawaan untuk membantu pengembang bekerja lebih efisien.
Contoh penggunaan umum untuk struktur data dalam program komputer meliputi:
Struktur data dapat menyimpan data secara logis dan efisien dengan tingkat persistensi data yang tinggi, sehingga data tetap mudah diakses dari basis data dan aplikasi lainnya. Struktur data juga dapat menyediakan penataan logis untuk data dalam jumlah besar sehingga dapat lebih mudah disortir, diurutkan, dan diproses.
Misalnya, situs web dapat menggunakan daftar tertaut untuk menyimpan log aktivitas pengguna. Daftar ini dapat merekam peristiwa dalam urutan kronologis dan tautan antara peristiwa dapat membantu membuat gambaran lengkap tentang apa yang dilakukan pengguna di setiap sesi.
Struktur data dapat membuat indeks informasi dengan memetakan nilai data ke item data yang sesuai dalam basis data, sehingga lebih mudah untuk menemukan dan mengakses catatan data tersebut.
Misalnya, situs web e-commerce dapat menggunakan tabel hash untuk membuat indeks produk dalam kategori. Ketika pengguna hanya ingin melihat satu kategori, situs web dapat menggunakan nilai hash untuk dengan cepat mengambil semua produk terkait alih-alih mencari di seluruh basis data setiap produk.
Struktur data menata data sehingga dapat dengan mudah dibagikan di antara aplikasi. Misalnya, banyak aplikasi menggunakan antrean untuk mengelola dan mengirim paket melalui protokol seperti TCP/IP. Antrean membantu memastikan bahwa paket dikirim dan diterima sesuai urutan pembuatannya.
Dengan menata data agar lebih mudah sederhana untuk dipahami oleh aplikasi dan pengguna akhir, struktur data mempermudah pencarian dan penemuan data.
Misalnya, struktur data grafik dapat memudahkan pengguna menemukan orang yang mereka kenal di situs media sosial. Struktur data grafik merekam hubungan antara verteks atau node. Algoritma pencarian dapat mengikuti koneksi antara node untuk menemukan pengguna terkait secara efisien.
Struktur data mendukung skalabilitas sistem dengan membantu program komputer memproses kumpulan data besar, memecahkan masalah kompleks, dan menggunakan sumber daya dengan lebih efisien.
Sebagai contoh, tabel hash dan struktur pohon dapat mempermudah penemuan informasi yang relevan dalam kumpulan data yang besar. Alih-alih memeriksa setiap elemen, sistem hanya perlu menggunakan tombol yang tepat atau mengikuti jalur yang tepat melalui pohon. Hal ini membantu menjaga kinerja tetap tinggi karena sistem tidak perlu menggunakan banyak sumber daya untuk mencari data dalam jumlah besar.
Rancang strategi data yang menghilangkan silo data, mengurangi kompleksitas, dan meningkatkan kualitas data untuk pengalaman pelanggan dan karyawan yang luar biasa.
watsonx.data memungkinkan Anda untuk menskalakan analitik dan AI dengan semua data Anda, di mana pun data berada, melalui penyimpanan data yang terbuka, hybrid, dan diatur.
Dapatkan nilai data perusahaan dengan IBM Consulting, untuk membangun organisasi berbasis insight yang memberikan keuntungan bisnis.