Modul 0 [Pengantar Struktur Data] - lab-kcks/Modul-STRUKDAT GitHub Wiki

Pengantar Struktur Data

Struktur Data dan Kegunaannya

Struktur data adalah sebuah manajemen data untuk menyimpan dan mengatur data secara terstruktur pada sistem komputer atau database sehingga memungkinkan pengaksesan dan pengoperasian data dengan efisien.

Linked list

Dalam melakukan penyusunan data terdapat dua istilah yang biasanya sering didengar yaitu node dan indeks. Berikut ini merupakan penjelasan mengenai kedua istilah tersebut.

  • Node : element yang terdapat pada struktur data. Dimana, pada setiap node mengandung pointer ke node selanjutnya.
  • Indeks : objek dalam sistem database yang biasanya digunakan untuk mempercepat proses pencarian data.

Dengan mempelajari struktur data akan membantu kita dalam menyatukan banyak element data secara efektif dan efisien. Serta, struktur data juga dapat mempengaruhi ketepatan algoritma suatu pemrograman.

Apa itu **Abstract Data Type (ADT)** ?

Abstract Data Type atau yang biasa disingkat ADT merupakan tipe (atau kelas) untuk objek yang perilakunya ditentukan oleh sekumpulan nilai dan sekumpulan operasi. Definisi ADT hanya menyebutkan operasi apa yang akan dilakukan tetapi tidak menjelaskan bagaimana operasi ini akan diimpelementasikan. Hal itu tidak menentukan bagaimana data akan diatur dalam memori dan algoritma apa yang akan digunakan untuk mengimplementasikan operasi. Ini disebut "abstrak" karena memberikan tampilan yang tidak bergantung pada implementasi.

Sebagai contoh dari penggunaan ADT yaitu integer. Integer merupakan ADT yang mempunyai nilai-nilai seperti …,-1,0,1,… dan beberapa operasi seperti penambahan, pengurangan, perkalian, pembagian, dan lainnya. Pengguna tidak harus mengetahui bagaimana tipe data integer diimplementasikan tetapi hanya mengetahui apa yang dapat dilakukan oleh integer.

ADT vs Struktur Data

No ADT Struktur Data
1 Menggambarkan data dan operasi untuk memanipulasi dan mengubahnya Menggambarkan bagaimana operasi ini benar-benar diimplementasikan.
2 Sebagian besar program menjadi independen dari representasi tipe data abstrak, sehingga dapat ditingkatkan tanpa merusak program. Yang tidak mungkin dalam type dan struktur data.
3 Lebih mudah bagi setiap bagian program untuk menggunakan implementasi tipe datanya dan itu akan lebih efisien. Hal ini tidak begitu efisien dibandingkan dengan ADT.
4 Implementasi konsep tingkat tinggi Implementasi konsep sederhana
5 Dapat digunakan di luar penggunaan aslinya. Jarang dapat digunakan kembali di luar penggunaan aslinya.
6 Menyembunyikan detail internal. Tidak menyembunyikan apapun.
7 Menggunakan class Menggunakan struct
8 Contoh: lists, sets, stacks. Contoh: arrays, linked lists, trees, graphs.

Jenis-Jenis Strukur Data

Pada umumnya, struktur data dapat dibedakan berdasarkan bentuk penyimpanannya. Struktur data dikelompokkan menjadi dua jenis, yaitu Struktur Data Linear dan Struktur Data Non-Linear.

  • Struktur Data Linear Dalam suatu struktur data, apabila elemen data disusun secara berurutan atau linier dimana setiap elemen melekat pada sebelumnya dan berikutnya berdekatan disebut struktur data linear. Struktur data linier lebih mudah diimplementasikan, hal tersebut dikarenakan memori komputer diatur secara linier. Contoh dari struktur data linear adalah array, stack, queue, linked list, dan lainnya.
  • Struktur Data Non-Linear Dalam suatu struktur data, apabila elemen data tidak tersusun secara berurutan atau linear disebut struktur data non-linear. Struktur data non-linier lebih kompleks diimplementasikan dibandingkan dengan struktur data linear. Contohnya adalah tree dan graph.
Linear vs Non-Linear

Struktur Data Linear vs Struktur Data Non-Linear

Perbedaan antara Struktur Data Linear dan Non-Linear:

No Struktur Data Linear Struktur Data Non-Linear
1 Dalam struktur data linier, elemen data disusun dalam urutan linier di mana setiap elemen melekat pada yang berdekatan sebelumnya dan berikutnya. Elemen data tidak tersusun secara berurutan atau linear.
2 level tunggal terlibat. banyak level yang terlibat.
3 Implementasinya mudah dibandingkan dengan struktur data non-linear. Implementasinya kompleks dibandingkan dengan struktur data linier.
4 Elemen data hanya dapat dilalui dalam sekali jalan. Elemen data tidak dapat dilalui dalam sekali jalan saja.
5 Memori kurang digunakan secara efisien. Memori digunakan secara efisien.

Notasi Big-O

“Big-O” menggambarkan tingkat kompleksitas suatu sistem. Notasi ini digunakan untuk mengukur lama waktu proses (runtime) pada suatu algoritma. Faktor yang memengaruhi “Big-O” diidentifikasi berdasarkan tingkat pertumbuhan data/input yang dinotasikan dengan N. Berikut grafik kompleksitas “Big-O”.

Grafik kompleksitas Big-O
Kompleksitas Sebutan Contoh
O(1) Constant Time Waktu yang dibutuhkan selalu konstan tidak peduli seberapa besar jumlah data. Contohnya mengakses elemen array.
O(N) Linear Time Waktu yang dibutuhkan sebanding dengan jumlah data. Contohnya Linear Search.
O(log N) Logarithmic Time Biasanya pada algoritma yang membagi masalah menjadi masalah yang lebih kecil (sub-problem). Contohnya Binary Search.
O(N log N) Linearithmic Time Contohnya pada Merge-Sort.
O(N2) Quadratic Time Contohnya pada Bubble-Sort.
O(2N) Exponential Time Mencari seluruh subset dari sebuah set memerlukan waktu 2N.
O(N!) Factorial Time Mencari seluruh permutasi dari sebuah string dengan panjang N.

Pemahaman “Big-O” berguna untuk meningkatkatkan kualitas dari algortima yang kita buat terhadap banyak data yang terlibat di dalamnya.

Berikut ini adalah contoh Notasi Big O dari beberapa Struktur Data dan Algoritma

Big O Cheatsheet
⚠️ **GitHub.com Fallback** ⚠️