Back home

Struktur Data 2 - Perbandingan Cepat

Struktur Data — Perbandingan Singkat (Bagian 2)

Struktur Data — Perbandingan Cepat (Bagian 2) Struktur Data 2-Perbandingan Cepat

Perbandingan antara struktur data yang berbeda — bigochheatsheet.com Perbandingan antara struktur data yang berbeda - bigochheatsheet.com

Setiap struktur data memiliki caranya sendiri yang berbeda, atau algoritma yang berbeda untuk menyortir, menyisipkan, menemukan,…dll. Hal ini disebabkan oleh sifat struktur datanya. Ada algoritme yang digunakan dengan struktur data tertentu, namun ada pula algoritme lain yang tidak dapat digunakan. Setiap struktur data memiliki metode atau algoritma yang berbeda-beda untuk mengurutkan, menyisipkan, mencari, dll. Hal ini disebabkan oleh sifat dari struktur data. Beberapa algoritma memiliki struktur data tertentu yang tidak dapat digunakan oleh algoritma lain.

Semakin efisien & sesuai algoritmanya, semakin Anda akan memiliki struktur data yang optimal. Semakin efisien dan tepat suatu algoritma maka struktur data yang diperoleh akan semakin optimal.

Kemungkinannya adalah, Anda akan mengandalkan algoritme bawaan yang digunakan dengan struktur data dalam bahasa Anda. Algoritme ini dioptimalkan dengan sangat baik dan diuji dalam pertempuran. Kemungkinan besar, Anda akan mengandalkan algoritme bawaan yang bekerja dengan struktur data dalam bahasa Anda. Algoritme ini dioptimalkan dan diuji dengan baik.

susunan array

kelebihan Keuntungan

  • Mudah dibuat, Mudah digunakan Mudah dibuat, mudah digunakan

  • Pengindeksan langsung: O(1) Pengindeksan langsung: O(1)

  • Akses berurutan: O(N) Akses berurutan: O(N)

kontra Kekurangan

  • Penyortiran: O(NLogN) Penyortiran: O(NLogN)

  • Pencarian: O(N), dan O(LogN) jika diurutkan Pencarian: O(N) dan O(LogN) jika diurutkan

  • Memasukkan dan menghapus: O(N) karena perpindahan item.

daftar tertaut daftar tertaut

kelebihan Keuntungan

  • Memasukkan dan menghapus: O(1). Memasukkan dan menghapus: O(1)

  • Akses Berurutan: O(N) Akses Berurutan: O(N)

Operasi penyisipan dan penghapusan mengacu pada operasi itu sendiri, karena Anda mungkin perlu mengakses semua node secara berurutan hingga node yang Anda cari.

Memasukkan dan menghapus jauh lebih mudah dengan daftar tertaut ganda.

kontra Kekurangan

  • Tidak Ada Akses Langsung; Hanya Akses Berurutan. Tidak ada akses langsung; Hanya akses berurutan.

  • Pencarian: O(N) Pencarian: O(N)

  • Penyortiran: O(NLogN) Penyortiran: O(NLogN)

Tumpukan dan Antrian Tumpukan dan Antrian

Tumpukan dan antrian memiliki tujuan yang sangat spesifik. Tumpukan adalah struktur data masuk terakhir, keluar pertama (LIFO), sedangkan antrian adalah struktur data masuk pertama, keluar pertama (FIFO). Tumpukan dan antrian memiliki tujuan yang sangat spesifik. Tumpukan merupakan struktur data masuk terakhir keluar pertama (LIFO), sedangkan antrian merupakan struktur data masuk pertama keluar pertama (FIFO).

kelebihan Keuntungan

  • Tekan/Tambahkan: O(1)
  • Munculkan/Hapus: O(1)
  • Intip: O(1)

Kontra

Jika Anda mencoba melakukan hal lain dengan tumpukan atau antrian, seperti jika Anda bertanya bagaimana cara menarik item dari tengah?. Kemudian, Anda harus melihat struktur data yang berbeda. Jika Anda ingin melakukan hal lain dengan tumpukan atau antrian, seperti jika Anda ingin mengetahui cara mengekstrak item dari tengah? Maka Anda harus melihat struktur data yang berbeda.

Tabel Hash. Tabel hash

kelebihan Keuntungan

  • Memasukkan dan menghapus: O(1) + Hashing & Indexing (diamortisasi). Memasukkan dan menghapus: O(1) + Hashing & Indexing (diamortisasi).

  • Akses langsung: O(1) + Hashing & Pengindeksan. Akses langsung: O(1) + Hashing & Pengindeksan.

Dibutuhkan sedikit proses untuk hashing dan pengindeksan. Namun hal baiknya adalah jumlah pemrosesannya sama setiap saat, meskipun tabel hash menjadi sangat besar. Hashing dan pengindeksan memerlukan beberapa pemrosesan. Namun keuntungannya adalah jumlah yang diproses setiap kali sama, meskipun tabel hash menjadi sangat besar.

Ketika tabel hash penuh, ukurannya akan bertambah. Dan, ketika jumlah keranjang yang terisi jauh lebih kecil dari ukuran tabel hash, maka ukurannya akan berkurang. Kedua operasi tersebut membutuhkan kompleksitas O(N). Oleh karena itu penyisipan dan penghapusan memerlukan O(1) diamortisasi. Ketika tabel hash terisi, ukurannya bertambah. Jika jumlah keranjang yang diisi jauh lebih kecil dari ukuran tabel hash, maka ukurannya akan berkurang. Kompleksitas kedua operasi adalah O(N). Inilah sebabnya mengapa penyisipan dan penghapusan memerlukan amortisasi O(1).

kontra Kekurangan

  • Beberapa overhead memerlukan lebih banyak ruang di memori daripada array. Beberapa overhead memerlukan lebih banyak ruang di memori daripada array.

  • Pengambilan elemen tidak menjamin pesanan tertentu. Pengambilan elemen tidak menjamin urutan tertentu.

  • Mencari suatu nilai (tanpa mengetahui kuncinya). Mencari suatu nilai (tanpa mengetahui kuncinya).

set set

kelebihan. Keuntungan

  • Memeriksa keanggotaan; menghargai keberadaan. Memeriksa keanggotaan; menghargai keberadaan.

  • Hindari duplikat hindari duplikasi

Kompleksitas pemeriksaan apakah suatu nilai terdapat dalam kumpulan bergantung pada struktur data dasar yang digunakan untuk mengimplementasikan kumpulan tersebut.

Dalam C++, Ia menggunakan pohon pencarian biner (mungkin pohon merah hitam; sejenis pohon pencarian biner yang menyeimbangkan diri). Jadi, kompleksitasnya adalah O(LogN), dan O(N) jika pohonnya tidak seimbang. Kompleksitasnya adalah O(LogN) jika pohonnya tidak seimbang maka kompleksitasnya adalah O(N)

Di Java, kelas HashSet mengimplementasikan Set Interface menggunakan struktur data tabel hash. Jadi, kompleksitasnya akan sama dengan tabel hash (lihat di atas). Di Java, kelas HashSet mengimplementasikan antarmuka Set menggunakan struktur data tabel hash. Oleh karena itu kompleksitasnya akan sama dengan tabel hash (lihat di atas).

Kontra

Set sengaja dibatasi. Tidak banyak yang dapat Anda lakukan dengan mereka. Jadi, mereka buruk dalam hampir semua hal lainnya. Koleksi sengaja dibatasi. Tidak ada yang dapat Anda lakukan terhadap mereka. Jadi, mereka buruk dalam hampir semua hal.### Pohon Pencarian Biner (BST)

Kelebihan

  • Memasukkan dan menghapus
  • Kecepatan Akses
  • Mempertahankan urutan yang diurutkan; pengambilan elemen teratur.

Kompleksitas penyisipan, penghapusan, dan pengaksesan akan menjadi O(LogN), dan O(N) jika pohonnya tidak seimbang.

Kontra

  • Beberapa overhead karena pembuatan dan pengelolaannya.

Tumpukan

Heaps adalah jenis pohon biner yang bagus untuk antrian prioritas. Heaps adalah jenis pohon biner yang bagus untuk antrian prioritas.

Kelebihan

  • Temukan Min/Temukan Maks: O(1)
  • Memasukkan: O(LogN)
  • Hapus Min/Hapus Maks: O(LogN)

Kontra

  • Mencari dan menghapus: O(N)

Dalam mencari dan menghapus, kita harus memindai semua elemen karena tidak menjamin urutan tertentu, tidak seperti BST.

Menghapus memerlukan melintasi seluruh pohon untuk mengakses elemen terlebih dahulu, kemudian menghapusnya, di mana operasi penghapusan itu sendiri memerlukan O(LogN).

Teks asli: https://medium.com/omarelgabrys-blog/data-structures-a-quick-comparison-6689d725b3b0