Struktur Data 1 - Menelusuri struktur data
Struktur Data — Menyelami Struktur Data (Bagian 1)
Struktur Data - Menyelami Struktur Data (Bagian 1) Struktur Data - Menyelami Struktur Data (Bagian 1)
Sumber artikel: https://medium.com/omarelgabrys-blog/diving-into-data-structures-6bc71b2e8f92
[Daftar Daftar]
Saat kita mempunyai masalah pemrograman, kita menyelami algoritmanya, sambil mengabaikan struktur data yang mendasarinya. Dan yang lebih buruk lagi, kami berpikir bahwa menggunakan struktur data lain tidak akan membuat banyak perbedaan, meskipun kami dapat meningkatkan kinerja kode kami secara signifikan dengan memilih struktur data alternatif. Saat kami menghadapi masalah pemrograman, kami mempelajari algoritme sambil mengabaikan struktur data yang mendasarinya. Lebih buruk lagi, menurut kami penggunaan struktur data lain tidak akan membuat banyak perbedaan, meskipun kami dapat meningkatkan kinerja kode secara signifikan dengan memilih struktur data lain.
Apa Itu Struktur Data Apa itu Struktur Data
Ini tidak akan dimulai tanpa pertanyaan: Apa sebenarnya struktur data itu? Hal ini tidak dimulai dengan pertanyaan: Apa sih struktur datanya?
Ini adalah pengaturan yang disengaja atas kumpulan data yang kami buat. merupakan penataan yang disengaja atas pengumpulan data yang kita bangun.
Pengaturan yang Disengaja Pengaturan yang disengaja
Pengaturan yang disengaja berarti pengaturan yang dilakukan dengan tujuan untuk memaksakan, untuk menegakkan, semacam organisasi sistematis pada data. Pengaturan yang disengaja mengacu pada pengaturan yang bertujuan yang ditujukan pada beberapa organisasi data yang sistematis. Pengaturan yang disengaja mengacu pada pengaturan data yang disengaja ke dalam beberapa organisasi sistematis. Pengaturan yang disengaja mengacu pada pengaturan yang disengaja yang memaksakan organisasi data sistematis tertentu.
Karena berguna, membuat hidup kita lebih mudah, dan mudah dikelola jika Anda menyimpan informasi terkait. Karena berguna, membuat hidup kita lebih mudah dan mudah dikelola jika Anda mengumpulkan informasi yang relevan.
Struktur Data dalam Kehidupan kita Struktur Data dalam kehidupan kita
Kami memerlukan struktur data dalam program kami karena kami berpikir seperti itu sebagai manusia. Dalam program kami, kami memerlukan struktur data karena itulah cara berpikir manusia.
Resep adalah struktur data aktual, seperti halnya daftar belanjaan, direktori telepon, kamus, dll. Semuanya memiliki struktur, memiliki format. Resep adalah struktur data aktual, seperti daftar belanjaan, buku telepon, kamus, dll. Semuanya punya struktur, semuanya punya format.
Struktur Data dan Pemrograman Berorientasi Objek Struktur Data dan Pemrograman Berorientasi Objek
Sekarang jika Anda seorang pemrogram berorientasi objek, Anda mungkin berpikir, Bukankah ini yang kita lakukan dengan kelas dan objek?. Jika Anda seorang programmer berorientasi objek, Anda mungkin berpikir, bukankah ini yang kita lakukan dengan kelas dan objek?
Maksud saya, kita mendefinisikan objek dunia nyata ini dalam sebuah program karena kita berpikir seperti itu sebagai manusia, atau setidaknya memang seharusnya begitu. Maksud saya, kita mendefinisikan objek dunia nyata ini dalam sebuah program karena kita berpikir seperti manusia, atau setidaknya kita seharusnya berpikir seperti itu.
Dan ya, tentu saja. Objek adalah tipe struktur data, dan bukan satu-satunya. Ya, tentu saja. Objek adalah struktur data, bukan satu-satunya.
Lima Perilaku Mendasar Lima Perilaku Mendasar
Cara mengakses, menyisipkan, menghapus, menemukan, & mengurutkan. Ini adalah operasi yang kemungkinan besar akan Anda lakukan. Cara mengakses, menyisipkan, menghapus, mencari dan mengurutkan. Ini adalah tindakan yang kemungkinan besar akan Anda lakukan.
Tidak semua struktur data memiliki lima perilaku dasar. Tidak semua struktur data memiliki lima perilaku dasar ini.
Misalnya, banyak struktur data yang tidak mendukung perilaku pencarian apa pun. Itu hanya kumpulan besar, wadah berisi banyak hal, dan jika Anda perlu menemukan sesuatu, Anda cukup memeriksa semuanya sendiri. Dan banyak yang tidak menyediakan perilaku penyortiran apa pun. Lainnya diurutkan secara alami. Misalnya, banyak struktur data tidak mendukung perilaku penelusuran apa pun, ini hanya kumpulan besar, wadah besar berisi sesuatu, dan jika Anda perlu menemukan sesuatu, Anda hanya perlu mengulanginya sendiri. Dan banyak yang tidak menawarkan perilaku penyortiran apa pun. Tatanan alami lainnya.
Setiap struktur data memiliki cara yang berbeda, atau algoritma yang berbeda untuk menyortir, menyisipkan, menemukan,…dll, Mengapa? Sebab, karena sifat struktur datanya, ada algoritma yang digunakan dengan struktur data tertentu, ada pula yang tidak bisa digunakan. Setiap struktur data memiliki cara atau algoritma yang berbeda untuk menyortir, menyisipkan, mencari, dll. Mengapa? Sebab, karena sifat struktur data, ada beberapa algoritma yang bekerja dengan struktur data tertentu dan beberapa algoritma lain tidak dapat digunakan.
Semakin efisien & sesuai algoritmanya, semakin Anda akan memiliki struktur data yang optimal. Algoritme ini mungkin sudah terpasang atau diterapkan oleh pengembang untuk mengelola dan menjalankan struktur data ini. Semakin efisien dan dapat diterapkan suatu algoritma, semakin optimal pula struktur data yang dapat diperoleh. Algoritma ini dapat dibangun atau diimplementasikan oleh pengembang untuk mengelola dan menjalankan struktur data ini.
Selalu baca dokumentasi bahasa dan periksa kinerja algoritma yang digunakan dengan struktur data yang mendasarinya. Algoritma yang berbeda mungkin digunakan berdasarkan data (ukuran, jenis,…) yang Anda miliki. Selalu baca dokumentasi bahasa dan periksa kinerja algoritma yang digunakan dengan struktur data yang mendasarinya. Algoritma yang berbeda dapat digunakan berdasarkan data (ukuran data, jenis,…).
Array Satu Dimensi Array satu dimensi
Array adalah struktur data paling mendasar dan paling umum digunakan di semua bahasa pemrograman. Dukungan untuk array satu dimensi umumnya dibangun langsung ke dalam bahasa inti itu sendiri. Array adalah struktur data paling dasar dan umum digunakan di semua bahasa pemrograman. Dukungan untuk array satu dimensi biasanya dibangun langsung ke dalam bahasa inti itu sendiri.
Array adalah kumpulan item yang diurutkan, dimana setiap item di dalam array memiliki indeks. Array adalah kumpulan item yang diurutkan, dan setiap item dalam array memiliki indeks.

Indeks Indeks
Indeksnya berurutan, merupakan indeks berbasis nol di sebagian besar bahasa, namun tidak demikian halnya dengan beberapa bahasa lainnya. Indeks bersifat berurutan, di sebagian besar bahasa merupakan indeks berbasis nol, namun di beberapa bahasa lain hal ini tidak terjadi.
Ukuran ukuranArray paling sederhana berukuran tetap, disebut juga array yang tidak dapat diubah, artinya array yang tidak dapat diubah. Mereka awalnya dapat dibuat dalam ukuran berapa pun. Namun setelah array dibuat, Anda tidak dapat menambah atau menghapus elemen darinya.
Array paling sederhana adalah array berukuran tetap, juga dikenal sebagai array yang tidak dapat diubah, artinya array yang tidak dapat diubah. Mereka awalnya dapat dibuat dalam berbagai ukuran. Namun begitu array dibuat, elemen tidak dapat ditambahkan atau dihapus darinya.
Terkadang kemampuan untuk menambah atau menghapus elemen secara dinamis saat program berjalan tersedia dalam array standar dalam suatu bahasa, dan terkadang Anda memiliki beberapa tipe array berbeda, bergantung pada apakah Anda memerlukan array tetap atau dapat diubah ukurannya. Terkadang kemampuan untuk menambah atau menghapus elemen secara dinamis saat program Anda berjalan tersedia dalam array standar bahasa tersebut, dan terkadang Anda dapat menggunakan beberapa tipe array berbeda, bergantung pada apakah Anda memerlukan array tetap atau array yang dapat diubah ukurannya.
Tipe Data Tipe Data
Array sederhana biasanya dibatasi pada tipe data tertentu. Ini adalah array bilangan bulat, atau array boolean. Namun beberapa bahasa memungkinkan Anda membuat array hanya dari objek umum, artinya Anda dapat memasukkan tipe data berbeda. Array sederhana biasanya terbatas pada tipe data tertentu. Ini adalah array bilangan bulat, atau array boolean. Namun beberapa bahasa mengizinkan pembuatan array objek generik, yang berarti tipe data berbeda dapat ditempatkan.
array = [123, true, "string", [1,2,3], object]
Array Multidimensi Array multidimensi
Mengambil array satu dimensi satu langkah lebih jauh, kita dapat memiliki array dengan dua dimensi. Mengambil array satu dimensi lebih jauh, kita bisa mendapatkan array dua dimensi.
Pada dasarnya ini adalah sebuah array dari array, di mana setiap item dalam array ini sendiri berisi array lain. Ini pada dasarnya adalah sebuah array dari array, dengan setiap item dalam array itu sendiri berisi array lain.
Oleh karena itu, setiap elemen array tidak diakses hanya dengan satu indeks, tetapi kita memerlukan dua angka untuk mengaksesnya. Kadang-kadang disebut sebagai matriks atau tabel karena sebenarnya ini adalah baris dan kolom informasi. Oleh karena itu, setiap elemen array tidak dapat diakses hanya dengan satu indeks, tetapi diperlukan dua angka untuk mengaksesnya. Kadang-kadang disebut matriks atau tabel karena sebenarnya ini adalah baris dan kolom informasi.
Kita dapat membawa larik dua dimensi lebih jauh ke larik tiga dimensi dan bahkan lebih jauh lagi. Kita dapat mengembangkan lebih lanjut array dua dimensi menjadi array tiga dimensi, dan bahkan lebih banyak lagi.
Array Bergerigi Array bergerigi
Ketika kita memiliki array Multidimensi, di mana setiap baris, setiap item harus memiliki jumlah item yang berbeda. Di sinilah susunan Jagged berperan. Ketika kita memiliki array multidimensi, setiap baris dan setiap item harus memiliki jumlah item yang berbeda. Di sinilah array bergerigi berperan.
Ini adalah array Multidimensi di mana setiap item dapat memiliki ukuran berbeda. adalah array multidimensi, setiap entri dapat memiliki ukuran berbeda.
Baris memiliki jumlah batu yang berbeda
baris dengan jumlah batu yang berbeda
Kapan Menggunakan Array Bergerigi Kapan menggunakan array bergerigi
Jika Anda memiliki array multidimensi yang mencatat jumlah penjualan setiap hari. Indeks pertama untuk bulan tersebut, sedangkan indeks kedua untuk hari tersebut. Jika Anda memiliki array multidimensi yang mencatat penjualan harian. Indeks pertama untuk bulan ini, dan indeks kedua untuk hari ini.
sales = [[124,153,135, …], [135,545,342,678,], …]
Anda dapat melihat bahwa Jan memiliki 31 hari, sedangkan Feb 29, dan seterusnya. Jadi, membiarkan elemen yang tidak relevan kosong, atau mengaturnya ke 0 atau -99 atau nilai lainnya tidak selalu diinginkan. Namun, Anda tidak boleh memiliki elemen yang mewakili kemustahilan. Seperti di bulan Februari yang hari ke 30 & 31 tidak ada. Anda dapat melihat bahwa bulan Januari memiliki 31 hari, sedangkan Februari memiliki 29 hari, dan seterusnya. Oleh karena itu, tidak selalu disarankan untuk mengosongkan elemen yang tidak relevan, atau menyetelnya ke 0 atau -99 atau nilai lainnya. Namun, Anda tidak boleh memiliki elemen yang mewakili hal yang mustahil. Misalnya di bulan Februari, 30 dan 31 hari tidak ada.
Jadi, dengan menggunakan Jagged Arrays, kita bisa mendapatkan rata-rata penjualan dalam sebulan dengan mengambil semua penjualan di bulan itu, menjumlahkan semuanya, dan membaginya dengan jumlah hari di bulan itu, tanpa harus menambahkan logika untuk mencari tahu hari-hari yang harus kita abaikan. Jadi, dengan menggunakan array bergerigi, kita bisa mendapatkan rata-rata penjualan selama sebulan dengan mengambil semua penjualan pada bulan tersebut, menjumlahkannya, lalu membaginya dengan jumlah hari dalam sebulan, tanpa menambahkan logika untuk menghitung jumlah hari yang harus diabaikan.
Array yang Dapat Diubah Ukurannya. Array yang dapat diubah ukurannya
Kebanyakan bahasa menyediakan semacam array yang dapat diubah ukurannya, atau array dinamis, atau bisa berubah. Di Java, array standar berukuran tetap dan tipe data tetap, namun Anda juga bisa membuat array yang dapat diubah ukurannya menggunakan ArrayList. Sebagian besar bahasa menyediakan semacam array yang dapat disesuaikan, dinamis, atau dapat diubah. Di Java, array standar memiliki ukuran tetap dan tipe data tetap, namun Anda juga dapat membuat array yang dapat diubah ukurannya menggunakan ArrayList.
Menambah & Menghapus Menambah dan Menghapus
Lokasi di mana kita menambahkan elemen baru atau menghapus elemen yang sudah ada memang penting, karena menambahkan atau menghapus elemen di bagian akhir lebih cepat dibandingkan di tempat lain. Posisi di mana Anda menambahkan elemen baru atau menghapus elemen yang sudah ada memang penting, karena menambahkan atau menghapus elemen di bagian akhir lebih cepat dibandingkan di tempat lain.
Jadi, elemen harus digeser ke kiri atau ke kanan, dan diindeks ulang; dipesan ulang. Oleh karena itu, hal ini memang berdampak pada kinerja. Oleh karena itu, elemen harus dipindahkan ke kiri atau ke kanan dan diindeks ulang; barang tersebut harus dipesan ulang. Jadi itu memang berdampak pada kinerja.
Cara perpindahannya berbeda-beda dari satu bahasa ke bahasa lainnya, ada yang menggeser item pada tempatnya, namun ada pula yang hanya menyalin seluruh isi array lama ke yang baru dengan item yang ditambahkan atau dihapus. Cara kerja konversi, tergantung pada bahasanya, ada yang akan memindahkan item di tempatnya, namun ada pula yang hanya menyalin seluruh isi array lama ke dalam array baru, sambil menambah atau menghapus item.
Pengurutan Array Pengurutan arrayPenyortiran selalu memerlukan komputasi yang intensif, Anda mungkin perlu melakukannya tetapi kami ingin meminimalkannya. Jadi, dengan selalu menyadari berapa banyak data yang kita miliki dan seberapa sering kita meminta untuk melakukan pengurutan, hal ini dapat mengarahkan kita untuk memilih struktur data yang berbeda.
Penyortiran selalu memerlukan komputasi yang intensif, Anda mungkin perlu melakukan ini, namun kami ingin meminimalkannya. Oleh karena itu, memahami berapa banyak data yang kita miliki dan seberapa sering kita memerlukan penyortiran dapat mengarahkan kita untuk memilih struktur data yang berbeda.
Menyortir orang berdasarkan tinggi badan —pleacher.com
Urutkan berdasarkan tinggi badan
Fungsi Penyortiran Bawaan Fungsi penyortiran bawaan
Saat kita mengurutkan array, ada beberapa hal yang perlu Anda pahami tentang fungsi pengurutan bawaan. Saat kami mengurutkan array, Anda perlu mengetahui tentang fungsi pengurutan bawaan.
Kedua, Apakah fungsi pengurutan bawaan akan mencoba mengurutkan array yang ada atau akan membuat salinan lain?. Sebagian besar bahasa akan mencoba mengurutkan array yang sudah ada, sementara beberapa bahasa akan membuat salinan baru dari array asli untuk memuat array yang diurutkan. Kedua, apakah fungsi sortir bawaan berupaya mengurutkan array yang ada, atau membuat salinan lain? Sebagian besar bahasa akan mencoba mengurutkan array yang ada, sementara beberapa bahasa akan membuat salinan baru dari array asli untuk memuat array yang diurutkan.
Menyortir Objek Khusus Menyortir objek khusus
Dalam bahasa berorientasi objek, Anda sering kali memiliki array objek kustom Anda sendiri, bukan hanya array nilai numerik atau bahkan string sederhana. Dalam bahasa berorientasi objek, Anda biasanya memiliki array objek kustom Anda sendiri, bukan hanya array angka sederhana atau bahkan array string.
Ketika Anda kemudian meminta array itu untuk mengurutkan objek-objek tersebut menggunakan fungsionalitas pengurutan bawaan dalam bahasa tersebut. Ia tidak tahu bagaimana melakukannya. Karena Anda perlu memberikan lebih banyak informasi tentang properti mana yang harus disortir. Array kemudian diminta untuk mengurutkan objek-objek ini menggunakan fungsi pengurutan yang ada di dalam bahasa tersebut. Ia tidak tahu bagaimana melakukannya. Karena Anda perlu memberikan informasi lebih lanjut tentang properti penyortiran yang sesuai.
Jadi, misalnya, urutkan pengguna berdasarkan id, nama, atau tanggal lahirnya. Ini mendefinisikan properti objek untuk diurutkan berdasarkan itu. Misalnya, mengurutkan pengguna berdasarkan id, nama, atau tanggal lahir. Ini mendefinisikan properti objek untuk diurutkan sesuai.
Biasanya hanya memerlukan beberapa baris dan biasanya disebut pembanding, atau fungsi perbandingan, atau metode perbandingan. Biasanya hanya diperlukan beberapa baris kode dan sering disebut pembanding, fungsi perbandingan, atau metode perbandingan.
##Mencari Array Pencarian array
Jika kita ingin mengetahui apakah nilai tertentu ada di suatu tempat dalam array atau tidak, kita dapat mengulang elemen array, dan memeriksa nilai pada posisi saat ini, dan melihat apakah nilainya sama dengan tujuan atau tidak. Jika kita ingin mengetahui apakah ada nilai tertentu dalam array, kita dapat mengulang elemen array dan memeriksa nilai pada posisi saat ini untuk melihat apakah nilainya sama dengan target.
Terus mencari bahkan di bawah tempat tidur
Teruslah mencari bahkan di bawah tempat tidur
Skenario terbaiknya adalah elemen pertama adalah nilai yang kita cari. Kasus terburuknya adalah nilainya berada di akhir atau tidak muncul di mana pun dalam array. Metode ini disebut sebagai pencarian linier atau pencarian sekuensial. Ini adalah metode kekerasan yang tidak elegan. Skenario kasus terbaik, elemen pertama adalah nilai yang kita cari. Skenario terburuknya adalah nilai muncul di akhir array atau tidak di mana pun dalam array. Metode ini disebut pencarian linier atau pencarian sekuensial. Ini adalah metode kekerasan yang tidak elegan.
Meskipun penelusuran linier mudah dipahami dan mudah ditulis serta berfungsi, namun lambat. Dan semakin banyak elemen yang Anda miliki, semakin lambat pula elemen tersebut. Meskipun penelusuran linier mudah dipahami, mudah ditulis, dan berfungsi, namun penelusuran tersebut lambat. Semakin banyak elemennya, semakin lambat.
Data Perlu Diurutkan Perlu memilah data
Jika tidak ada urutan, tidak ada urutan nilai yang dapat diprediksi dalam array, maka mungkin tidak ada pilihan lain selain memeriksa semua elemen array. Jika nilai dalam array tidak memiliki urutan, tidak ada urutan yang dapat diprediksi, maka mungkin tidak ada pilihan lain selain memeriksa semua elemen array.
Jadi, data harus diurutkan sedemikian rupa sehingga kita bisa menggunakan algoritma selain pencarian linier. Oleh karena itu, memiliki semacam keteraturan pada elemen-elemen tersebut menjadi semakin penting. Oleh karena itu, data harus diurutkan sedemikian rupa sehingga kita dapat menggunakan algoritma selain pencarian linier. Oleh karena itu, menjadi semakin penting untuk memilah elemen-elemen ini
Tantangan Warisan Struktur Data Tantangan pewarisan struktur data
Terkadang Anda mungkin setuju untuk menggunakan kemampuan pencarian yang lambat, karena satu-satunya cara untuk memperbaikinya adalah dengan mengurutkan array, yang pada gilirannya akan menambah kinerja yang tidak sepadan. Terkadang Anda mungkin setuju untuk menggunakan fungsi pencarian yang lambat karena satu-satunya cara untuk menyelesaikan masalah adalah dengan mengurutkan array, yang pada gilirannya menambah penalti kinerja yang tidak sepadan.
Jadi, jika Anda akan mencari pada suatu array satu kali, lebih baik memiliki kompleksitas O(N) untuk pencarian linier, daripada O(NLogN) untuk pengurutan + O(LogN) untuk pencarian. Namun, jika Anda ingin melakukan banyak pencarian, Anda dapat mengurutkan array satu kali terlebih dahulu di awal, dan sekarang, Anda dapat melakukan pencarian dengan O(LogN) setiap saat, bukan pencarian linear O(N). Jadi, jika Anda mencari sekali pada sebuah array, akan menjadi O(N) lebih rumit untuk pencarian linier daripada pengurutan O(NLogN) + O(LogN). Namun, jika Anda akan melakukan banyak pencarian, pertama-tama Anda dapat mengurutkan array satu kali di awal, dan sekarang Anda dapat mencari dengan O(LogN) setiap kali, bukan O(N) dengan pencarian linier.Anda tidak dapat memiliki struktur data yang sama baiknya dalam semua situasi. Struktur data yang diurutkan secara alami memerlukan lebih sedikit waktu dalam mencari elemen, dan lebih banyak waktu dalam memasukkan karena ini membuat array tetap terurut. Sedangkan array dasar memerlukan lebih banyak waktu dalam pencarian, dan lebih sedikit waktu dalam memasukkan elemen ke akhir array. Anda tidak dapat memiliki struktur data yang sama baiknya dalam segala situasi. Struktur data yang terurut secara alami memerlukan lebih sedikit waktu untuk mencari elemen dan lebih banyak waktu untuk menyisipkan karena struktur tersebut mempertahankan urutan array. Meskipun array dasar memerlukan waktu pencarian lebih lama, menyisipkan elemen di akhir array membutuhkan waktu lebih sedikit
##Daftar daftar
Daftar adalah struktur data yang cukup sederhana. Strukturnya melacak urutan item. Daftar adalah struktur data yang sangat sederhana. Ini terstruktur untuk melacak urutan item.
It’s a collection of items (called nodes) ordered in a linear sequence.
它是按线性顺序排列的项(称为节点)的集合。
Node-node ini tidak perlu dialokasikan bersebelahan dalam memori seperti halnya array. Node tidak perlu dialokasikan secara berdekatan di memori seperti array.
Ada konsep pemrograman teoretis umum tentang daftar, dan ada implementasi spesifik dari struktur data daftar, yang mungkin menggunakan ide daftar dasar ini dan menambahkan sejumlah fungsi. Daftar diimplementasikan baik sebagai daftar tertaut (tunggal, ganda, melingkar,…) atau sebagai array dinamis. Ada konsep pemrograman teoritis umum tentang daftar, dan ada implementasi khusus dari struktur data daftar yang mungkin menggunakan konsep daftar dasar ini dan menambahkan banyak fungsi. Daftar dapat diimplementasikan sebagai daftar tertaut (daftar tertaut tunggal, daftar tertaut ganda, daftar tertaut melingkar, daftar tertaut melingkar) atau sebagai array dinamis.
Array Vs Daftar Array Vs Daftar
Daftar adalah jenis struktur data yang berbeda dari array. Daftar adalah struktur data yang berbeda dari array.
Perbedaan terbesar adalah pada gagasan akses langsung Vs akses sekuensial. Array memungkinkan keduanya; akses langsung dan berurutan, sedangkan daftar hanya mengizinkan akses berurutan. Hal ini karena cara struktur data ini disimpan dalam memori. Perbedaan terbesar adalah konsep akses langsung dan akses sekuensial. Array memungkinkan keduanya; akses langsung dan berurutan, sedangkan daftar hanya mengizinkan akses berurutan. Hal ini karena cara struktur data ini disimpan dalam memori.
Struktur daftar tidak mendukung indeks numerik seperti array. Struktur daftar tidak mendukung pengindeksan numerik seperti array.
##Daftar Tertaut Daftar Tertaut
It’s a collection of nodes, where each node has a value and a link to the next node in the list.
它是节点的集合,每个节点都有一个值和到列表中下一个节点的链接。
Penunjuk dari node terakhir menunjuk ke NULL, atau terminator, atau node dummy. Penunjuk dari simpul terakhir menunjuk ke NULL, atau terminator, atau simpul virtual.
Daftar Tertaut — wikipedia
Daftar tautan - Wikipedia
Karena cara pembuatan, penambahan, dan penghapusan elemen jauh lebih mudah dibandingkan dengan array. Karena cara pembuatannya, menambah dan menghapus elemen jauh lebih sederhana daripada array.
Namun, dengan array, diperlukan pergeseran ke kiri atau ke kanan untuk menjaga struktur teratur yang bermakna. Bahkan menambahkan elemen di akhir array masih memerlukan realokasi seluruh array untuk menyimpan array di area memori yang berdekatan. Namun, dengan array, array perlu digeser ke kiri atau ke kanan untuk mempertahankan struktur terurut yang bermakna. Bahkan jika Anda menambahkan elemen ke akhir array, Anda masih perlu mengalokasikan ulang seluruh array agar array disimpan di area memori yang berdekatan.
##Daftar Tertaut Ganda Daftar tertaut ganda
Apa yang kami perkenalkan adalah daftar tertaut, Namun untuk lebih spesifiknya, ini disebut “Daftar Tertaut Tunggal”. Kita juga dapat memiliki “Daftar Tertaut Ganda”. Kami memperkenalkan daftar tertaut, tetapi untuk lebih spesifik, ini disebut “daftar tertaut tunggal”. Kita juga dapat memiliki “daftar tertaut ganda”.
Daripada setiap node memiliki referensi hanya ke node berikutnya, kami menambahkan satu bagian data lagi yang juga memiliki referensi ke node sebelumnya. Jadi, ini memungkinkan kita untuk maju dan mundur, menelusuri daftar ke segala arah. Alih-alih setiap node hanya memiliki referensi ke node berikutnya, bagian data lain ditambahkan yang juga memiliki referensi ke node sebelumnya. Jadi, ini memungkinkan kita untuk maju dan mundur, melintasi daftar ke segala arah.
Daftar Tertaut Ganda - wikipedia
Daftar tertaut ganda - Wikipedia
Daftar tertaut di sebagian besar bahasa biasanya diterapkan sebagai daftar tertaut ganda. Di sebagian besar bahasa, > daftar tertaut biasanya diimplementasikan sebagai daftar tertaut ganda.
Daftar Tertaut Tunggal Vs Ganda Daftar Tertaut Tunggal Vs Ganda
Operasi Menambahkan jelas kurang berfungsi dalam daftar tertaut tunggal, karena daftar tertaut ganda memerlukan perubahan lebih banyak tautan daripada daftar tertaut tunggal. Menambahkan operasi ** ke daftar tertaut tunggal jelas lebih sulit karena daftar tertaut ganda memerlukan lebih banyak perubahan tautan daripada daftar tertaut tunggal.
Untuk daftar tertaut tunggal, kita berasumsi bahwa kita menyisipkan di bagian atas atau setelah beberapa simpul tertentu. Untuk daftar tertaut tunggal, kami mengasumsikan penyisipan setelah simpul kepala atau simpul tertentu.
Dalam hal menambahkan sebelum beberapa node tertentu, Anda perlu mengetahui node sebelum node tersebut, yang mengharuskan Anda mengakses semua node secara berurutan hingga Anda menemukan node yang Anda cari. Jika Anda ingin menambahkan node sebelum node tertentu, Anda perlu mengetahui node sebelum node tersebut, yang mengharuskan Anda mengunjungi semua node secara berurutan hingga Anda menemukan node yang Anda cari.
Menghapus lebih sederhana dan berpotensi lebih efisien dalam daftar tertaut ganda, karena dalam daftar tertaut tunggal, Anda perlu mengetahui simpulnya sebelum simpul tersebut dihapus. Dalam daftar tertaut ganda, penghapusan lebih sederhana, dan mungkin lebih efisien, karena dalam daftar tertaut tunggal, Anda perlu mengetahui simpulnya sebelum simpul yang ingin Anda hapus.
##Daftar Tertaut Melingkar Daftar Tertaut MelingkarDalam daftar tertaut tunggal, jika penunjuk berikutnya dari simpul terakhir menunjuk kembali ke simpul pertama. Lalu, itu adalah “Daftar Tautan Melingkar”. Dan jika penunjuk sebelumnya dari node pertama menunjuk ke node terakhir juga. Sekarang ini akan dianggap sebagai “Daftar Tautan Ganda Melingkar”. Dalam daftar tertaut tunggal, jika penunjuk berikutnya dari simpul terakhir menunjuk ke simpul pertama. Lalu ada “daftar tertaut melingkar”. Jika penunjuk sebelumnya dari simpul pertama menunjuk ke simpul terakhir. Sekarang, ini akan dianggap sebagai “daftar tertaut ganda melingkar”.

Daftar Tertaut Melingkar - wikipedia Daftar tertaut melingkar - Wikipedia
Ini tidak umum, tapi bisa berguna untuk masalah tertentu. Jadi, jika kita sampai di akhir daftar dan berkata berikutnya, kita mulai lagi dari awal. Ini tidak umum, namun dapat berguna untuk masalah tertentu. Jadi jika kita sampai pada akhir daftar, katakanlah yang berikutnya, kita mulai dari awal.
##Tumpukan tumpukan
Sama seperti array dan daftar, tumpukan dan antrian juga merupakan kumpulan item. Itu hanyalah cara berbeda untuk menampung banyak item. Ini adalah struktur data masuk terakhir, keluar pertama, tanpa mempedulikan indeks numerik. Sama seperti array dan daftar, tumpukan dan antrian adalah kumpulan item. Itu hanyalah cara berbeda untuk mengakomodasi banyak proyek. Ini adalah struktur data masuk terakhir, keluar pertama dan tidak peduli dengan indeks numerik.
It’s a collection of items where we add and remove items to and from the top of the stack.
它是一个项集合,我们在堆栈顶部添加和删除项。
Tumpukan piring kotor
tumpukan piring kotor
Implementasi Tumpukan Implementasi tumpukan
Tumpukan dapat dengan mudah diimplementasikan baik menggunakan array atau daftar tertaut Tumpukan dapat dengan mudah diimplementasikan dengan array atau daftar tertaut
Penggunaan Tumpukan Penggunaan tumpukan
Stack tidak terbatas hanya pada model situasi dunia nyata (sama untuk antrian). Salah satu kegunaan terbaik tumpukan dalam pemrograman adalah saat mengurai kode atau ekspresi, di mana Anda perlu melakukan sesuatu seperti memvalidasi jumlah kurung kurawal buka dan tutup, tanda kurung siku, atau tanda kurung yang benar. Stack tidak terbatas pada simulasi situasi dunia nyata (hal yang sama berlaku untuk antrian). Salah satu kegunaan terbaik tumpukan dalam pemrograman adalah ketika mengurai kode atau ekspresi dan Anda perlu melakukan sesuatu seperti memverifikasi jumlah kurung kurawal pembuka, kurung siku, atau kurung siku yang benar.
Operasi Dasar Tumpukan Operasi dasar tumpukan
Mereka adalah: push(), pop(), & mengintip(). push adalah untuk mendorong elemen baru di bagian atas tumpukan, dan pop akan mengembalikan (dan menghapus) elemen di bagian atas, sedangkan peek akan mendapatkan elemen di bagian atas tanpa menghapusnya. Mereka adalah: push(), pop() dan mengintip(). push digunakan untuk mendorong elemen baru di atas tumpukan, pop akan mengembalikan (dan menghapus) elemen teratas, dan peek akan mendapatkan elemen teratas tanpa menghapusnya.
Tumpukan Vs Array Vs Daftar Tertaut Tumpukan Vs Array Vs Daftar Tertaut
Bekerja dengan tumpukan lebih sederhana daripada bekerja dengan array atau daftar tertaut, karena tidak banyak yang dapat Anda lakukan dengan tumpukan. Menggunakan tumpukan lebih sederhana daripada menggunakan array atau daftar tertaut karena lebih sedikit hal yang dapat Anda lakukan dengan tumpukan.
Ini adalah struktur data yang sengaja dibatasi dan sengaja dibatasi. Yang kami lakukan hanyalah mendorong, meletus, dan mungkin mengintip. Dan jika Anda mencoba melakukan hal lain dengan tumpukan ini, Anda menggunakan struktur data yang salah. Ini adalah struktur data yang sengaja dibatasi. Yang kami lakukan hanyalah mendorong, meletuskan, atau mengintip. Jika Anda ingin menggunakan tumpukan ini untuk hal lain, Anda menggunakan struktur data yang salah.
##Antrian Antrian
Perbedaan utama antara tumpukan dan antrian. Tumpukan adalah yang terakhir masuk pertama keluar (LIFO), sedangkan antrian adalah yang pertama masuk pertama keluar (FIFO). Dan seperti halnya tumpukan, kita tidak perlu memikirkan tentang indeks numerik. Perbedaan utama antara tumpukan dan antrian. Tumpukan adalah yang terakhir masuk pertama keluar (LIFO), sedangkan antrian adalah yang pertama masuk pertama keluar (FIFO). Seperti tumpukan, kita tidak perlu memikirkan tentang pengindeksan numerik.
It’s a collection of items where we add items to the end and remove items from the front of the queue.
它是项的集合,我们在末尾添加项,并从队列前面删除项。
Antrian orang-orang mengantri
Implementasi Antrian Implementasi antrian
Seperti halnya tumpukan, antrian dapat diimplementasikan baik menggunakan array atau daftar tertaut. Seperti tumpukan, antrian dapat diimplementasikan menggunakan array atau daftar tertaut.
Penggunaan Antrian Gunakan antrian
Antrian sangat umum digunakan dalam situasi konkurensi untuk melacak tugas apa yang menunggu untuk dilakukan dan memastikan kita mengerjakannya dalam urutan tersebut. Antrian sangat umum digunakan dalam situasi konkurensi untuk melacak tugas yang menunggu untuk dieksekusi dan memastikan bahwa tugas tersebut diproses secara berurutan.
Operasi Dasar Antrian Operasi dasar antrian
Sama seperti tumpukan: tambah(), hapus(), & peek(). Sama seperti tumpukan: add(), delete() dan peek().
Antrean Prioritas antrian prioritas
Beberapa bahasa menawarkan versi antrean, yang disebut antrean prioritas. Ini memungkinkan Anda mengatur elemen dalam antrian berdasarkan prioritasnya. Beberapa bahasa menyediakan versi antrian yang disebut antrian prioritas. Ini memungkinkan Anda mengatur elemen dalam antrian berdasarkan prioritas.
It’s a queue, where items with higher priority step ahead of items with lower priority in the queue.
它是一个队列,在队列中优先级较高的项先于优先级较低的项。
Cara Kerja Antrean Prioritas Cara kerja antrian prioritas
Saat Anda menambahkan item yang memiliki prioritas yang sama, item tersebut akan mengantri seperti biasa dalam urutan masuk pertama, keluar pertama. Jika sesuatu datang dengan prioritas yang lebih tinggi, maka hal itu akan mendahului mereka dalam antrian. Saat Anda menambahkan item dengan prioritas yang sama, item tersebut akan dimasukkan ke dalam antrean dalam urutan normal. Jika sesuatu dengan prioritas lebih tinggi muncul, maka hal tersebut akan mendahului mereka dalam antrian.
Mendefinisikan Prioritas Mendefinisikan prioritas
Anda dapat menentukan berdasarkan elemen mana yang memiliki prioritas lebih tinggi, lebih rendah, atau sama. Hal ini dilakukan dengan mengimplementasikan fungsi pembanding atau perbandingan (seperti saat mengurutkan array), di mana Anda memberikan logika Anda sendiri untuk membandingkan prioritas antar elemen. Anda dapat menentukan berdasarkan prioritas tinggi, prioritas rendah, atau prioritas setara suatu elemen. Hal ini dapat dicapai dengan menerapkan fungsi pembanding atau perbandingan (seperti mengurutkan array) di mana Anda dapat memberikan logika Anda sendiri saat membandingkan prioritas antar elemen.
##Deque antrian berujung gandaDeque, diucapkan “DEK”, digunakan ketika kita ingin memanfaatkan kekuatan antrian dan tumpukan, di mana Anda dapat menambah atau menghapus dari awal atau akhir. Deque diucapkan sebagai “DEK” dan kita menggunakan deque ketika kita ingin memanfaatkan kemampuan antrian dan tumpukan, di mana kita dapat menambah atau menghapus dari awal atau akhir.
It’s a queue and a stack at the same time.
它同时是一个队列和一个堆栈。
##Array Asosiatif Array Asosiatif
Mereka memberikan kemampuan untuk menggunakan kunci yang berarti untuk bekerja dengan elemen dalam struktur data kita, daripada bekerja dengan indeks numerik sebagai kunci. Hal ini memberikan hubungan yang bermakna antara kunci dan nilai. Mereka mengizinkan elemen dalam struktur data untuk diproses menggunakan kunci yang bermakna, bukan indeks numerik sebagai kunci. Ini memberikan hubungan yang bermakna antara kunci dan nilai.
It is a collection of key-value pairs.
它是键-值对的集合。
var user = {
firstName: "Bob",
lastName: "Jones",
age: 26,
email: "bob.jones@example.com"
};
Implementasi array asosiatif mempunyai nama yang berbeda-beda. Di Objective-C dan Python, mereka disebut kamus. Implementasi array asosiatif memiliki nama berbeda. Di Objective-C dan Python, mereka disebut kamus.
Urutan Elemen Urutan elemen
Tidak seperti array dasar, dalam array asosiatif, kunci-kuncinya tidak perlu berada dalam urutan tertentu. Karena keteraturan tidak menjadi perhatian dalam array asosiatif. Tidak seperti array dasar, kunci dalam array asosiatif tidak perlu berada dalam urutan tertentu. Karena keteraturan tidak ada hubungannya dengan array asosiatif.
Tentu, Anda mungkin merasa berguna untuk mengurutkannya berdasarkan kunci. Anda mungkin merasa berguna untuk mengurutkannya berdasarkan nilai, atau, Anda mungkin tidak perlu mengurutkannya sama sekali. Tentu saja, Anda mungkin menganggap pengurutan berdasarkan kunci berguna. Anda mungkin merasa berguna untuk mengurutkannya berdasarkan nilai, atau Anda mungkin tidak perlu mengurutkannya sama sekali.
Duplikat Kunci Duplikat kunci
Dengan cara yang sama Anda tidak mendapatkan nomor indeks yang sama muncul dua kali dalam array dasar, tidak boleh ada kunci duplikat, dan kunci harus unik dalam array asosiatif. Demikian pula, nomor indeks yang sama tidak boleh muncul dua kali dalam larik dasar, tidak boleh ada kunci duplikat, dan kunci harus unik dalam larik asosiatif.
Tipe Data Kunci & Nilai Tipe data kunci & nilai
Anda biasanya dapat menggunakan tipe data apa pun sebagai kunci atau nilai. Merupakan hal yang umum untuk menggunakan string sebagai kunci. Biasanya Anda dapat menggunakan tipe data apa pun sebagai kunci atau nilai. Biasanya string digunakan sebagai kunci.
Sebagian besar array asosiasi, apakah disebut kamus, peta, atau hash, diimplementasikan menggunakan struktur data tabel hash. Jadi, kita akan mulai dengan melakukan hashing dan kemudian mendalami tabel hash. Sebagian besar array asosiatif diimplementasikan menggunakan struktur data tabel hash, baik berupa kamus, peta, atau hash. Jadi, kita akan mulai dengan hash dan kemudian mendalami tabel hash.
##Mencirikan Hash
Hashing adalah konsep yang berharga dalam pemrograman. Ini digunakan, tidak hanya dalam struktur data, tetapi juga dalam keamanan, kriptografi, grafik, audio. Hashing adalah konsep yang berharga dalam pemrograman. Ini digunakan tidak hanya untuk struktur data tetapi juga untuk keamanan, enkripsi, grafik, dan audio.
It’s a way to take our data and run it through a function, which will return a small, simplified reference generated from that original data.
这是一种获取数据并通过函数运行数据的方法,函数将返回从原始数据生成的一个小的、简化的引用。
Hashing biasanya digunakan dengan kata sandi Hashing biasanya digunakan dengan kata sandi
Referensinya mungkin berupa bilangan bulat, atau huruf dan angka,…dll. Referensinya mungkin hanya bilangan bulat, atau huruf dan angka, dll.
Mengapa Menggunakan Hashing? Mengapa menggunakan hashing?
Karena mampu mengambil objek yang kompleks, dan membaginya menjadi representasi bilangan bulat tunggal. Jadi, kita bisa menggunakan nilai integer tersebut untuk sampai ke lokasi tertentu dalam struktur data. Karena Anda dapat melakukan hashing objek kompleks ke representasi bilangan bulat. Oleh karena itu, kita dapat menggunakan nilai integer ini untuk mencapai lokasi tertentu dalam struktur data.
Hashing Bukan Enkripsi Hashing bukan enkripsi
Fungsi hash tidak dapat dibalik; Itu satu arah. Jadi, Anda tidak dapat mengubah hasil nilai hash kembali ke data aslinya. Oleh karena itu, Anda kehilangan informasi saat melakukan hashing, tidak apa-apa, itu disengaja. Fungsi hash tidak dapat diubah; mereka satu arah. Oleh karena itu, Anda tidak dapat mengubah hasil hash kembali ke data asli. Oleh karena itu, informasi hilang selama proses hashing, dan ini disengaja.
Enkripsi Hashing Vs — ssl2buy.com Enkripsi Hashing Vs — ssl2buy.com
Implementasi Fungsi Hashing Implementasi fungsi hash
Katakanlah kita telah menentukan kelas person, dan kita ingin fungsi hash ditentukan pada kelas ini. Fungsi hash harus mengembalikan referensi tunggal tertentu (biasanya bilangan bulat) untuk objek orang tertentu. Bilangan bulat tunggal ini dihasilkan menggunakan data dalam objek orang (nama depan, nama belakang, tanggal lahir,…dll). Misalkan kita mendefinisikan kelas person dan kita ingin mendefinisikan fungsi hash pada kelas ini. Fungsi hash harus mengembalikan referensi spesifik (biasanya bilangan bulat) untuk objek orang tertentu. Integer ini dihasilkan menggunakan data dari objek orang (nama depan, nama belakang, ulang tahun, dll.).
Aturan Hashing Aturan hash
-
Jika kita mengambil objek yang sama persis, dengan data yang sama, dan memasukkannya ke dalam fungsi hash lagi, saya mengharapkan hasil hash yang sama.
-
Jika Anda memiliki dua objek berbeda yang Anda anggap sama, keduanya harus mengembalikan nilai hash yang sama.
-
Meskipun dua objek yang sama harus menghasilkan nilai hash yang sama, dua nilai hash yang sama tidak menjamin keduanya berasal dari objek yang sama, Mengapa? Karena dua objek yang berbeda mungkin, dalam kondisi tertentu, memberikan hasil yang sama dari fungsi hash (Lihat Hashing Collision). Dua objek yang sama seharusnya menghasilkan nilai hash yang sama, namun dua nilai hash yang sama tidak dijamin berasal dari objek yang sama, mengapa? Karena dalam beberapa kasus, dua objek berbeda mungkin memberikan hasil yang sama dari fungsi hash (lihat tabrakan hash).
Hashing Tabrakan Hash tabrakan
Itu terjadi ketika kita memiliki objek berbeda dengan data berbeda, namun memberikan hasil nilai hash yang sama. Ketika kita memiliki objek berbeda dan data berbeda, tetapi mendapatkan nilai hash yang sama.Bisa jadi karena fungsi hashingnya adalah fungsi hash yang sederhana, namun bisa juga dengan fungsi hash yang lebih kompleks. Dalam kebanyakan kasus, tidak apa-apa, kita dapat mengelola tabrakan hash. Hal ini mungkin karena fungsi hash adalah fungsi hash yang sederhana, namun fungsi hash yang lebih kompleks pun dimungkinkan. Dalam kebanyakan kasus, hal ini tidak masalah dan kita dapat mengelola tabrakan hash.
##Tabel Hash Tabel hash
Ide hashing sangat penting untuk memahami struktur data tabel hash. Ide hashing adalah dasar untuk memahami struktur data tabel hash.
It’s a typical data structure to implement an associative arrays; mapping keys to values.
实现关联数组是一种典型的数据结构;将键映射到值。
Memetakan nomor (kunci) ke kotak Memetakan nomor (kunci) ke kotak
Tabel Hash Vs Array Vs Daftar Berjajar Tabel Hash Vs Array Vs Daftar
Manfaat besar tabel hash dibandingkan array dan daftar tertaut adalah tabel ini sangat cepat, baik untuk melihat apakah suatu item ada atau menemukan item tertentu dalam tabel hash, dan untuk menyisipkan dan menghapus item. Keuntungan terbesar dari tabel hash dibandingkan dengan array dan daftar tertaut adalah bahwa tabel tersebut sangat cepat, baik untuk melihat apakah suatu item ada, untuk menemukan item tertentu dalam tabel hash, dan untuk menyisipkan dan menghapus item.
Bagaimana Tabel Hash Bekerja? Bagaimana cara kerja tabel hash?
Buku telepon kecil sebagai tabel hash — Wikipedia Buku telepon kecil sebagai tabel hash — Wikipedia
Ketika tabel hash dibuat, itu sebenarnya merupakan struktur data berbasis array secara internal, dan biasanya dapat dibuat dengan kapasitas awal. Tabel hash terdiri dari array slot, atau keranjang yang berisi nilai. Ketika tabel hash dibuat, itu sebenarnya adalah struktur data berbasis array yang biasanya dapat dibuat dengan kapasitas awal. Tabel hash terdiri dari array slot atau keranjang yang berisi nilai.
Saat menambahkan pasangan nilai kunci, Ini akan mengambil kunci kita dan menjalankannya melalui fungsi hash, mengeluarkan nilai hash tertentu (biasanya bilangan bulat). Saat menambahkan pasangan nilai kunci, kunci tersebut diambil dan dijalankan melalui fungsi hash, sehingga menghasilkan nilai hash tertentu (biasanya bilangan bulat).
Jika nilai hash ini besar, Anda mungkin perlu menyederhanakannya sehubungan dengan ukuran tabel hash saat ini. Jika hash ini besar, Anda mungkin perlu menyederhanakannya berdasarkan ukuran tabel hash saat ini.
Kemudian, ia akan menetapkan nilai ke elemen array dengan indeks sama dengan nilai integer hash yang dikembalikan. Ini kemudian akan menetapkan nilai tersebut ke elemen array dengan indeks yang sama dengan nilai integer hash yang dikembalikan.
// adding a key-value pair
hash_table.add(key, value)
// what happen behind the scene
index = hash(key)
index = index % array_size
array[index] = value
Mengakses nilai yang diberi kunci mengikuti ide yang sama. Ia akan mengambil kunci itu, menjalankannya melalui fungsi hash yang sama persis, dan kemudian bisa langsung menuju ke lokasi tertentu yang berisi nilai yang kita cari. Mengakses nilai kunci tertentu mengikuti ide yang sama. Dibutuhkan kunci itu, menjalankannya melalui fungsi hash yang sama persis, dan kemudian bisa langsung menuju ke lokasi tertentu yang berisi nilai yang kita cari.
Tidak ada pencarian linier, tidak ada pencarian biner, tidak ada penelusuran daftar. Kita langsung saja ke elemen yang kita perlukan. Tidak ada pencarian linier, tidak ada pencarian biner, tidak ada daftar traversing. Kami langsung mendapatkan elemen yang kami butuhkan.
Mengelola Konflik Manajemen Tabrakan
Kita dapat memperkirakan bahwa tabrakan hash akan muncul; ketika kita mendapatkan nilai hash yang sama untuk kunci yang berbeda. Tapi, bagaimana cara mengelolanya? Kita bisa memperkirakan akan terjadi tabrakan hash; ketika kita mendapatkan nilai hash yang sama untuk kunci yang berbeda. Tapi, bagaimana cara mengelolanya?
Saat kita menambahkan pasangan nilai kunci baru, dan terjadi tabrakan, nilai tersebut akan ditempatkan di lokasi yang sama, meskipun ada nilai lain di lokasi tersebut. Saat kita menambahkan pasangan kunci-nilai baru, dan terjadi tabrakan, nilai tersebut akan ditempatkan pada posisi yang sama, meskipun terdapat nilai lain pada posisi tersebut.
Sekarang, implementasi tabel hash memiliki cara berbeda untuk menangani hal ini secara otomatis. Mulai dari setiap lokasi berisi koleksi sederhana, seperti array, atau daftar tertaut. Sekarang, implementasi tabel hash memiliki cara berbeda untuk menangani hal ini secara otomatis. Setiap lokasi berisi koleksi sederhana, seperti array atau daftar tertaut.
Jadi, kita masih bisa mencapai lokasi mana pun dengan sangat cepat, tetapi begitu kita mencapai lokasi dengan banyak nilai, tabel hash akan melintasi daftar internal tersebut untuk menemukan apa yang kita cari. Jadi kita masih bisa mencapai lokasi mana pun dengan sangat cepat, namun begitu kita mencapai lokasi dengan banyak nilai, tabel hash menelusuri daftar internal tersebut untuk menemukan apa yang kita cari.
Setiap node dalam daftar tertaut pada gilirannya akan berisi nilai yang terkait dengan kunci tertentu. Selain itu, Ini akan berisi kunci itu, atau referensi ke kunci itu. Karena jika ada beberapa nilai di dalam lokasi yang sama, kita perlu mengetahui kunci mana yang dimiliki nilai tersebut. Setiap node dalam daftar tertaut pada gilirannya berisi nilai yang terkait dengan kunci tertentu. Selain itu, ini akan berisi kunci, atau referensi ke kunci tersebut. Karena untuk beberapa nilai dalam posisi yang sama, kita perlu mengetahui kunci mana yang dimiliki nilai tersebut.
Tabrakan hash diselesaikan dengan rangkaian terpisah - wikipedia Tabrakan hash diselesaikan dengan rangkaian terpisah - Wikipedia
Inilah yang disebut “Teknik Rantai Terpisah” dalam tabel hash. Sekarang, ada teknik lain untuk mengelola tabrakan di dalam tabel hash, termasuk pengalamatan terbuka, hashing Cuckoo, hop-scotch, dan hashing Robin Hood. Ini adalah “teknik penautan independen” dalam tabel hash. Saat ini, ada teknik lain untuk mengelola tabrakan dalam tabel hash, termasuk pengalamatan terbuka, hashing cuckoo, hopscotch, dan hashing Robin Hood.
Menulis Fungsi Hash Menulis Fungsi Hash
Saat Anda ingin menyimpan pasangan nilai kunci menggunakan struktur data tabel hash, mungkin sebagian besar objek sudah memiliki fungsi hash. Perilaku default biasanya mengembalikan bilangan bulat; dihitung dari alamat memori objek itu. Saat Anda ingin menggunakan struktur data tabel hash untuk menyimpan pasangan nilai kunci, mungkin sebagian besar objek sudah memiliki fungsi hash. Perilaku default biasanya mengembalikan bilangan bulat; dihitung dari alamat memori objek.Jika Anda pernah mengganti perilaku kesetaraan di kelas Anda, Anda harus mengganti perilaku hash. Karena kode hash sangat terikat dengan kesetaraan, dan jika Anda memiliki dua objek yang Anda anggap sama, keduanya harus mengembalikan nilai hash yang sama. Jika Anda pernah mengganti perilaku kesetaraan di kelas, Anda harus mengganti perilaku hashing. Karena kode hash sangat erat kaitannya dengan kesetaraan, dan jika ada dua objek yang Anda anggap sama, keduanya harus mengembalikan nilai hash yang sama.
Sekali lagi, jika Anda mengubah arti objek Anda menjadi sama, Anda juga harus mengubah arti hash objek tersebut. Demikian pula, jika Anda mengubah arti kesetaraan objek, Anda juga harus mengubah arti hashing objek tersebut.
Objek string telah menggantikan kesetaraan dan perilaku hashingnya sendiri. Jadi, jika Anda memiliki dua objek string terpisah, keduanya akan tetap dihitung sama, dan mengembalikan hash yang sama, jika keduanya memiliki nilai yang sama, meskipun sebenarnya objek string terpisah yang dialokasikan di bagian memori berbeda. Objek string telah mengesampingkan kesetaraan dan perilaku hashingnya sendiri. Jadi, jika Anda memiliki dua objek string terpisah, keduanya akan tetap sama dan mengembalikan hash yang sama jika keduanya memiliki nilai yang sama, meskipun sebenarnya objek string terpisah yang dialokasikan di bagian memori berbeda.
##Set disetel
Jika yang Anda butuhkan hanyalah wadah besar, Anda dapat memasukkan banyak barang ke dalamnya, tanpa peduli urutannya. Jika Anda hanya membutuhkan wadah besar, Anda bisa memasukkan banyak barang ke dalamnya dan tidak perlu memikirkan pesanan.
Tidak ada urutan khusus seperti daftar tertaut, atau tumpukan, atau antrian. Tidak ada pasangan nilai kunci seperti pada tabel hash. Tidak ada urutan tertentu, seperti daftar tertaut, tumpukan, atau antrian. Tidak ada pasangan nilai kunci, seperti tabel hash.
It’s an unordered collection of items, with no repeated values.
它是一个无序的项目集合,没有重复的值。
Dengan tidak berurutan, maksud saya tidak ada indeks seperti array. Tidak berurutan artinya tidak ada indeks seperti pada array.
Kantong belanjaan berisi makanan Sekantong makanan
Implementasi Set Set implementasi
Kumpulan sebenarnya menggunakan gagasan yang sama tentang struktur data tabel hash sebagian besar waktu. Namun, alih-alih pasangan kunci-nilai (hashing kunci dan menyimpan nilainya), saat Anda menggunakan kumpulan, kunci juga dianggap sebagai nilai (atau nilai ditetapkan ke nilai tiruan atau nilai default). Koleksi sebenarnya menggunakan gagasan yang sama tentang struktur data tabel hash dalam banyak kasus. Namun, tidak seperti pasangan kunci-nilai (di mana kunci di-hash dan nilainya disimpan), ketika bekerja dengan koleksi, kunci juga dianggap sebagai nilai (atau nilai ditetapkan ke nilai dummy atau default).
Jadi, untuk mendapatkan nilai spesifik, atau objek spesifik apa pun dalam kumpulan, Anda harus memiliki objek itu sendiri. Dan satu-satunya alasan untuk melakukan ini adalah untuk memeriksa keberadaannya. Hal ini sering disebut sebagai “memeriksa keanggotaan”. Jadi, untuk mendapatkan nilai tertentu dalam koleksi, atau objek tertentu, Anda memerlukan objek itu sendiri. Satu-satunya alasan untuk melakukan ini adalah untuk menguji apakah hal itu ada. Hal ini sering disebut “memeriksa keanggotaan”.
Himpunan dapat diimplementasikan menggunakan pohon pencarian biner yang menyeimbangkan diri untuk himpunan yang diurutkan, atau tabel hash untuk himpunan yang tidak diurutkan. Kumpulan yang diurutkan dapat diimplementasikan menggunakan pohon pencarian biner yang menyeimbangkan diri, atau kumpulan yang tidak diurutkan dapat diimplementasikan menggunakan tabel hash.
Keunggulan Himpunan Kelebihan Himpunan
Tidak seperti array, atau nilai dalam array asosiatif, atau daftar tertaut, set tidak mengizinkan duplikat. Anda tidak dapat menambahkan objek yang sama, nilai yang sama dua kali ke kumpulan yang sama. Tidak seperti nilai dalam array, array asosiatif, atau daftar tertaut, set tidak mengizinkan duplikat. Objek yang sama dan nilai yang sama tidak dapat ditambahkan ke koleksi yang sama dua kali.
Set dirancang untuk pencarian yang sangat cepat, untuk dapat dengan cepat melihat apakah kita sudah memiliki nilai yang terdapat dalam suatu koleksi. Koleksi dirancang untuk pencarian cepat, sehingga Anda dapat dengan cepat melihat apakah suatu nilai sudah terdapat dalam koleksi.
Anda juga dapat mengulangi semua elemen dalam satu set, hanya saja Anda mungkin tidak mendapatkan jaminan pesanan. Anda juga dapat mengulangi semua elemen dalam koleksi, dan Anda mungkin tidak mendapatkan jaminan pemesanan.
##Pohon pohon Ide dari struktur data pohon adalah kita mempunyai kumpulan node, dan node tersebut memiliki koneksi, mereka memiliki hubungan satu sama lain. Konsep struktur data pohon adalah kita memiliki sekumpulan node, dan node ini memiliki koneksi, dan terdapat tautan di antara node tersebut.
Ini terdengar mirip dengan daftar tertaut. Namun dalam daftar tertaut, kita selalu berpindah dari satu node ke node berikutnya yang spesifik. Saat berada di pohon, setiap node mungkin terhubung ke satu, atau dua, atau lebih node. Ini terdengar mirip dengan daftar tertaut. Namun dalam daftar tertaut, kita selalu berpindah dari satu node ke node berikutnya yang spesifik. Dalam sebuah pohon, setiap node dapat dihubungkan ke satu, dua, atau lebih node.
It’s a collection of nodes, where each node might link to one, or two, or more nodes.
它是节点的集合,每个节点可能链接到一个、两个或多个节点。
Sebatang Pohon - richardkho.com
Terminologi Pohon Terminologi pohon
Ada beberapa terminologi yang menyertai pohon tersebut. Anda dapat menemukan lebih banyak tentang mereka di sini. Mereka penting untuk memahami dan bekerja dengan pepohonan. Ada beberapa istilah yang menyertai pohon ini. Anda dapat menemukan informasi lebih lanjut tentang mereka di sini. Mereka penting untuk memahami dan mempelajari pohon.
Pohon Biner Pohon Biner
Pohon biner hanyalah sebuah pohon dengan maksimal dua simpul anak untuk setiap simpul induk. Pohon biner sering digunakan untuk mengimplementasikan struktur pencarian yang luar biasa yang disebut “Pohon Pencarian Biner” atau “BST”. Pohon biner adalah pohon yang mempunyai paling banyak dua simpul anak untuk setiap simpul induk. Pohon biner sering digunakan untuk mengimplementasikan struktur mewah yang dapat dicari yang disebut “pohon pencarian biner” atau “BST”.
##Pohon Pencarian Biner (BST) Pohon Pencarian Biner (BST)
It’s a specific type of binary tree, where the left child node is less than its parent, and a right child node is greater than its parent.
它是一种特定类型的二叉树,其中左子节点小于其父节点,而右子节点大于其父节点。
Pohon Pencarian Biner (BST) — Wikipedia Pohon Pencarian Biner (BST) - Wikipedia
Bagaimana Cara Kerja Pohon Pencarian Biner? Bagaimana cara kerja pohon pencarian biner?
Aturannya adalah simpul anak kiri harus lebih kecil dari induknya, dan simpul anak kanan harus lebih besar dari induknya, dan aturan tersebut mengikuti hingga ke bawah dalam pohon. Aturannya adalah node anak kiri harus lebih kecil dari node induknya, dan node anak kanan harus lebih besar dari node induknya, dan aturan ini berlanjut hingga ke bawah pohon.Dan saat kita memasukkan node baru dengan nilai, aturan akan selalu diikuti untuk memastikan bahwa pohon tetap terurut. Saat kita memasukkan node baru dengan sebuah nilai, aturan akan selalu diikuti untuk memastikan bahwa pohon tetap terurut.
Jadi, ini adalah struktur data yang secara alami tetap terurut dan kadang-kadang disebut “Pohon Terurut” atau “Pohon Terurut”. Oleh karena itu, ini adalah struktur data yang secara alami menjaga keteraturan, dan kadang-kadang disebut “pohon terurut” atau “pohon terurut”.
Menyimpan Node Sebagai Pasangan Nilai Kunci Menyimpan node sebagai pasangan nilai kunci
Pohon pencarian biner sering digunakan untuk menyimpan pasangan nilai kunci, artinya node terdiri dari kunci dan nilai terkait. Dan itu adalah kunci yang akan digunakan untuk mengurutkan node sesuai dengan pohon pencarian biner. Pohon pencarian biner biasanya digunakan untuk menyimpan pasangan nilai kunci, yaitu node yang terdiri dari kunci dan nilai terkait. Ini adalah kunci untuk mengurutkan node dalam pohon pencarian biner.
Duplikat
Anda tidak dapat memiliki kunci duplikat, sama seperti Anda tidak memiliki kunci duplikat dalam tabel hash atau bahkan array. Tidak boleh ada kunci duplikat, sama seperti tidak boleh ada kunci duplikat di tabel hash atau bahkan array.
Menambah & Mengakses Node Menambah dan mengakses node
Menambah & Mengakses node mengikuti aturan yang sama yang disebutkan di atas. Jika node saat ini kurang dari, maka ke kanan, jika lebih besar dari, ke kiri. Menambah dan mengakses node mengikuti aturan yang sama seperti di atas. Jika node saat ini lebih kecil, ke kanan, jika lebih besar, ke kiri.
Ambil Node Secara Berurutan Ambil node secara berurutan
Manfaat lainnya adalah pohon pencarian biner tetap terurut. Jadi, jika kita mengambil item dari kiri ke kanan, bawah ke atas, kita akan mengeluarkan semuanya secara berurutan. Manfaat lainnya adalah pohon pencarian biner menjaga keteraturan. Jadi, jika kita mengambil item dari kiri ke kanan dan bawah ke atas, kita akan mengurutkannya.
Pohon Tidak Seimbang Pohon tidak seimbang
Hal ini terjadi ketika pohon memiliki lebih banyak level node di sisi kanan daripada di kiri (atau sebaliknya). Ketika terdapat lebih banyak simpul di sisi kanan pohon daripada di kiri (dan sebaliknya).
Meskipun hal seperti ini jarang terjadi, namun kami tidak selalu dapat menjamin bahwa cara penambahan data akan memungkinkan kami membangun pohon dengan struktur simetris sempurna hingga ke bawah. Meskipun hal ini jarang terjadi, kami tidak selalu dapat menjamin bahwa kami menambahkan data sedemikian rupa sehingga memungkinkan kami membuat pohon dengan struktur yang sepenuhnya simetris.
Dalam hal ini kita mengatakan bahwa pohon kita tidak seimbang; Ada lebih banyak level di satu sisi dibandingkan di sisi lain. Dan kita harus melakukan lebih banyak pemeriksaan untuk menemukan atau menyisipkan atau menghapus nilai apa pun di sisi kanan dibandingkan di sisi kiri (atau sebaliknya). Dalam hal ini, kita mengatakan pohon tersebut tidak seimbang; satu sisi memiliki tingkat energi lebih banyak daripada sisi lainnya. Kita perlu melakukan lebih banyak pemeriksaan untuk menemukan, menyisipkan, atau menghapus nilai apa pun di sebelah kanan daripada di sebelah kiri (atau sebaliknya).
Implementasi Pohon Pencarian Biner Implementasi pohon pencarian biner
Apa yang telah kita bicarakan adalah ide abstrak dari struktur data pohon pencarian biner. Namun, ada beberapa implementasi dari ide pohon pencarian biner ini yang merupakan pohon pencarian biner yang menyeimbangkan diri. Apa yang telah kita diskusikan adalah ide abstrak dari struktur data pohon pencarian biner. Namun, ada beberapa implementasi dari ide pohon pencarian biner ini yang merupakan pohon pencarian biner yang menyeimbangkan diri.
Gagasan penting dalam menyeimbangkan pohon pencarian biner adalah bahwa jumlah level kira-kira sama satu sama lain. Kami tidak memiliki tiga tingkat di kiri dan dua puluh di kanan. Ide penting dalam menyeimbangkan pohon pencarian biner adalah jumlah levelnya kira-kira sama. Tidak ada tiga lantai di kiri dan tidak ada dua puluh lantai di kanan.
Contoh pohon yang dapat menyeimbangkan diri adalah: Pohon Merah-Hitam, AVL atau Adelson-Velskii dan Landis, Pohon Splay, Kambing Hitam, dan banyak lagi. Contoh pohon yang menyeimbangkan diri dapat berupa: pohon merah-hitam, AVL atau Adelson-Velskii dan Landis’, pohon Splay, pohon kambing hitam, dll.
Pohon Pencarian Biner Vs Tabel Hash Pohon Pencarian Biner Vs Tabel Hash
Keduanya cepat untuk disisipkan, cepat untuk dihapus, cepat untuk mengakses elemen apa pun bahkan pada ukuran besar. Namun, karena pohon pencarian biner tetap terurut, pohon tersebut memungkinkan kita mengeluarkan semua item dari pohon secara berurutan, sedangkan tabel hash tidak menjamin urutan tertentu. Kedua metode ini menyediakan penyisipan cepat, penghapusan cepat, dan akses cepat ke elemen apa pun, bahkan elemen berukuran besar. Namun, karena pohon pencarian biner mempertahankan pengurutan, pohon tersebut memungkinkan kita mengeluarkan semua item dari pohon secara berurutan, sedangkan tabel hash tidak dapat menjamin urutan tertentu.
##Tumpukan tumpukan Heap biasanya diimplementasikan menggunakan ide pohon biner, bukan pohon pencarian biner namun tetap pohon biner. Ini adalah cara mengimplementasikan tipe data abstrak lainnya seperti antrian prioritas. Heap biasanya diimplementasikan menggunakan ide pohon biner, bukan pohon pencarian biner, melainkan pohon biner. Ini adalah cara untuk mengimplementasikan tipe data abstrak lainnya seperti antrian prioritas.
It’s a specific type of binary tree, where we add nodes from top to bottom, left to right, and child nodes must be less (or greater) than or equal their parents.
这是一种特定类型的二叉树,我们从上到下、从左到右添加节点,子节点必须小于(或大于)或等于它们的父节点。
Max Heap - Wikipedia Tumpukan terbesar - Wikipedia
Oleh karena itu, kami sepenuhnya mengisi level mana pun sebelum melanjutkan ke level berikutnya. Jadi kita tidak perlu khawatir pohon menjadi tidak seimbang seperti yang bisa terjadi pada pohon pencarian biner. Jadi kami akan mengisi level mana pun sepenuhnya sebelum melanjutkan ke level berikutnya. Jadi kita tidak perlu khawatir pohonnya menjadi tidak seimbang seperti pohon pencarian biner.
Tumpukan Min Vs Maks
Min heap menyatakan bahwa setiap node anak harus lebih besar dari (atau sama dengan) node induknya, sedangkan max heap menyatakan bahwa setiap node anak harus lebih kecil dari (atau sama dengan) node induknya. Namun, kami tidak peduli jika sebuah node lebih kecil atau lebih besar dari saudaranya. Min-heap menyatakan bahwa setiap node anak harus lebih besar dari (atau sama dengan) node induknya, sedangkan max-heap menyatakan bahwa setiap node anak harus lebih kecil dari (atau sama dengan) node induknya. Namun, kami tidak peduli apakah sebuah node lebih kecil atau lebih besar dari saudaranya.
Bagaimana Cara Kerja Tumpukan? Bagaimana cara kerja tumpukan?
Jadi, Dalam kasus Min Heap: Jadi, untuk tumpukan minimum:1. Kami terus menambahkan elemen dari atas ke bawah, kiri ke kanan 2. Kemudian bandingkan dengan node induk; Apakah lebih kecil dari induknya? Kemudian bandingkan dengan node induk; Apakah lebih kecil dari induknya? 3. Jika sudah, maka tukar node tersebut dengan induknya, 4. Lakukan terus langkah 2 hingga 3 hingga node lebih besar dari induknya (atau menjadi node root). seperti yang ditunjukkan. Terus jalankan langkah dari 2 hingga 3 hingga node lebih besar dari induknya (atau menjadi node root).
Pertukaran kecil node inilah yang membuat heap tetap terorganisir. Pertukaran node kecil ini adalah cara tumpukan tetap terorganisir.
Heap Belum Terurut Sepenuhnya Heap belum terurut sepenuhnya
Berbeda dengan pohon pencarian biner, yang tetap terurut, dan kita dapat dengan mudah menelusuri pohon tersebut dan mengambil semuanya secara berurutan. Tidak seperti pohon pencarian biner, yang mempertahankan urutan, kita dapat dengan mudah melintasi pohon dan mengambil semuanya secara berurutan.
Karena jika Anda perhatikan, bahwa pada tingkat tertentu setelah akar, nilai-nilainya tidak harus berada dalam urutan tertentu, asalkan semuanya lebih besar (atau lebih kecil) dari induknya. Karena jika Anda perhatikan, pada tingkat tertentu setelah akar, nilai-nilai tersebut tidak harus muncul dalam urutan tertentu, asalkan semuanya lebih besar (atau lebih kecil) dari induknya.
Salah satu keuntungan dari hal ini adalah heap tidak perlu melakukan reorganisasi sebanyak yang diperlukan dengan pohon pencarian biner. Salah satu manfaatnya adalah heap tidak perlu mengatur ulang dirinya sendiri seperti halnya dengan pohon pencarian biner.
Satu hal yang dapat kita yakini adalah bahwa node induk akan selalu lebih kecil atau lebih besar dari node turunannya, sehingga nilai minimum atau maksimum akan selalu berada di atas. Satu hal yang dapat kita pastikan adalah bahwa node induk selalu lebih kecil atau lebih besar dari node turunannya, sehingga nilai minimum atau maksimum selalu berada di atas.
Oleh karena itu, heap paling berguna untuk gagasan antrian prioritas. Oleh karena itu, heap paling berguna untuk konsep antrian prioritas.
##Grafik Grafik
Batasan sebatang pohon sudah tidak ada lagi di sini. Sebuah node dapat terhubung ke beberapa node lainnya, tanpa urutan tertentu, tanpa node root. Keterbatasan pohon sudah tidak ada lagi. Sebuah node dapat dihubungkan ke beberapa node lainnya tanpa urutan tertentu dan tanpa node root.
Ini adalah kumpulan node, di mana sebuah node dapat terhubung ke beberapa node lain, tanpa urutan tertentu, tanpa node root. Ini adalah kumpulan node di mana satu node dapat dihubungkan ke beberapa node lainnya, tanpa urutan tertentu, dan tanpa node root.
Grafik jaringan sosial
Diagram jaringan sosial
Teori Graf Dalam Matematika Teori Graf dalam Matematika
Karena grafik dalam ilmu komputer sangat erat kaitannya dengan teori grafik dalam matematika. Kita sering mendengar istilah-istilah matematika digunakan. Jadi, dalam teori graf, kita menyebut simpul sebagai “simpul”, dan hubungan di antara simpul-simpul tersebut disebut sebagai “tepi”. Karena grafika dalam ilmu komputer dan teori grafika dalam matematika saling berkaitan erat. Sangat umum menggunakan istilah matematika. Oleh karena itu, dalam teori graf, kita menyebut simpul sebagai “simpul” dan hubungan di antara simpul tersebut disebut sebagai “tepi”.
Penggunaan Grafik Penggunaan grafik
Kita dapat menggunakan grafik untuk memodelkan jaringan sosial dengan setiap node adalah satu orang. Atau, memodelkan jarak antar kota. Kita dapat membuat model jaringan ethernet di kantor, atau di seluruh gedung, atau di kota. Kita dapat menggunakan grafik untuk memodelkan jaringan sosial dengan node untuk setiap orang. Alternatifnya, buat model jarak antar kota. Kita dapat memodelkan jaringan Ethernet di kantor, seluruh gedung, atau kota.
Grafik Langsung & Tidak Langsung Grafik langsung dan tidak langsung
Kita juga dapat mengatakan apakah tepian tersebut harus memiliki arah ke sana atau tidak. Kita juga dapat mengatakan apakah sisi-sisi ini harus mempunyai arah.
Dalam beberapa situasi, masuk akal bahwa setiap sisi, hubungan apa pun antara dua simpul, hanya bersifat satu arah; Jadi, node A terhubung ke node B, sedangkan yang sebaliknya tidak benar; node B TIDAK terhubung ke node A. Dalam beberapa kasus, setiap sisi, setiap hubungan antara dua simpul, bersifat satu arah; oleh karena itu, node A terhubung ke node B, tetapi tidak sebaliknya; node B tidak terhubung ke node A.
Dalam situasi lain, Anda mungkin ingin bisa mengikuti tepian itu, tautan itu, ke arah mana pun; Jadi, node A terhubung ke node B, dan juga node B terhubung ke node A. Dalam kasus lain, Anda mungkin ingin mengikuti tepi ini, tautan ini, ke segala arah; node A terhubung ke node B, dan node B terhubung ke node A.
Grafik Tertimbang Grafik berbobot
Anda juga bisa memberi bobot pada setiap sisinya; mengasosiasikan suatu angka, dengan masing-masing sisinya. Anda juga bisa memberi bobot pada setiap tepinya; mengasosiasikan nomor dengan masing-masing sisi.
Anda dapat melakukan ini untuk mewakili, misalnya, jarak antar kota, jika Anda mencoba menghitung rute terpendek antara beberapa lokasi. Atau, Anda dapat menggunakan bobot untuk menunjukkan sisi mana yang diprioritaskan dibandingkan sisi lainnya. Anda dapat merepresentasikan, misalnya, jarak antar kota jika Anda ingin menghitung rute terpendek antara beberapa lokasi. Alternatifnya, Anda dapat menggunakan bobot untuk menunjukkan sisi mana yang lebih disukai dibandingkan sisi lainnya.
##Tipe Data Abstrak (ADT) tipe data abstrak (adt)
Sebelum mendalami tipe data abstrak, apa itu tipe data abstrak, dan perbedaan antara tipe data tersebut dan konsep lainnya. Mari kita definisikan apa yang dimaksud dengan tipe data. Sebelum kita mempelajari tipe data abstrak, mari kita pahami apa itu tipe data abstrak dan apa perbedaannya dari konsep lain. Mari kita definisikan apa arti tipe data.
Tipe Data Tipe Data
Tipe data suatu variabel menentukan nilai yang dikandungnya, ditambah operasi yang dapat dilakukan pada variabel tersebut.
Tipe Data terdiri dari: Tipe Data Primitif, Kompleks atau Komposit, dan Abstrak. Tipe data meliputi: tipe data dasar, tipe data kompleks atau tipe data gabungan, dan tipe data abstrak.
Tipe Data Abstrak (ADT) Tipe Data Abstrak (ADT)Ini adalah tipe data, sama seperti tipe data primitif integer dan boolean. ADT tidak hanya terdiri dari operasi, tetapi juga nilai data yang mendasarinya dan batasan pada operasi.
Ini adalah tipe data, sama seperti tipe data integer dan primitif Boolean. ADT tidak hanya berisi operasi, tetapi juga nilai data yang mendasarinya dan batasan operasi.
Batasan untuk tumpukan adalah bahwa setiap pop selalu mengembalikan item yang paling baru didorong yang belum dimunculkan. Batasan tumpukan adalah setiap pop selalu mengembalikan item yang paling terakhir didorong namun belum dimunculkan.
Implementasi sebenarnya dari ADT diabaikan, dan kita tidak perlu mempedulikannya. Jadi, bagaimana tumpukan sebenarnya diimplementasikan tidaklah begitu penting. Tumpukan dapat dan sering kali diimplementasikan di belakang layar menggunakan array dinamis, namun dapat juga diimplementasikan dengan daftar tertaut. Itu tidak masalah. Implementasi ADT sebenarnya bersifat abstrak dan kita tidak perlu peduli. Jadi, tidak masalah bagaimana tumpukan itu diimplementasikan. Tumpukan dapat dan biasanya diimplementasikan menggunakan array dinamis, tetapi tumpukan juga dapat diimplementasikan menggunakan daftar tertaut. Itu tidak masalah.
Daftar, tumpukan, antrian, dan lainnya semuanya merupakan tipe data abstrak. Daftar, tumpukan, antrian, dll. semuanya merupakan tipe data abstrak.
Tipe Data Abstrak & Struktur Data Tipe data abstrak dan struktur data
ADT bukanlah alternatif dari struktur data, melainkan konsep yang berbeda. ADT bukanlah pengganti struktur data, melainkan konsep yang berbeda.
Ketika kami mengatakan struktur data tumpukan, kami mengacu pada bagaimana tumpukan diimplementasikan dan disusun dalam memori. Namun, ketika kita mengatakan ADT tumpukan, kita mengacu pada tipe data tumpukan yang memiliki kumpulan operasi yang ditentukan, batasan operasi, dan nilai yang mungkin. Ketika kita berbicara tentang struktur data tumpukan, yang kita maksud adalah bagaimana tumpukan diimplementasikan dan diatur dalam memori. Namun, ketika kami mengatakan tumpukan ADT, yang kami maksud adalah tipe data tumpukan yang memiliki serangkaian operasi, batasan operasi, dan nilai yang mungkin ditentukan.
Kita tidak peduli dengan implementasi yang mendasarinya, sama seperti saat menggunakan bilangan bulat, kita diabstraksi dari bagaimana bilangan bulat direpresentasikan dalam memori, kita hanya tertarik pada operasi (tambah, kurangi,…), dan nilai yang mungkin (…, −2, −1, 0, 1, 2,…). Kami tidak peduli dengan implementasi yang mendasarinya, karena ketika bekerja dengan bilangan bulat, kami melepaskan diri dari representasi bilangan bulat di memori, kami hanya tertarik pada operasi (penjumlahan, pengurangan, …), dan nilai yang mungkin (…−2−1,0,1,2,…).
Struktur data dapat mengimplementasikan satu atau lebih tipe data abstrak (ADT) tertentu, yang menentukan operasi yang dapat dilakukan pada struktur data. Struktur data dapat mengimplementasikan satu atau lebih tipe data abstrak (ADT) tertentu, yang menentukan operasi yang dapat dilakukan pada struktur data.
Tipe Data Abstrak BUKAN Kelas Abstrak Tipe Data Abstrak BUKAN Kelas Abstrak
Keduanya tidak ada hubungannya satu sama lain. Kelas abstrak hanya mendefinisikan operasinya, terkadang dengan komentar yang menjelaskan batasannya, menyerahkan implementasi sebenarnya kepada kelas yang mewarisinya. Tidak ada hubungannya satu sama lain. Kelas abstrak hanya mendefinisikan operasi, terkadang dengan anotasi yang menjelaskan batasan, sehingga implementasi aktual diserahkan kepada kelas yang mewarisi.
Meskipun ADT sering diimplementasikan sebagai Antarmuka (kelas abstrak) seperti di Java. Misalnya, antarmuka Daftar di Java mendefinisikan operasi Daftar ADT, sedangkan kelas yang mewarisi menentukan implementasi aktual (struktur data). Sedangkan adts biasanya diimplementasikan sebagai antarmuka (kelas abstrak), seperti di Java. Misalnya, antarmuka Daftar di Java mendefinisikan operasi Daftar ADT, sedangkan kelas yang diwarisi menentukan implementasi aktual (struktur data).
Namun, hal ini tidak selalu terjadi. Misalnya, Java memiliki kelas tumpukan, yang merupakan kelas konkret biasa, namun tumpukan juga merupakan tipe data abstrak, artinya, ini mewakili gagasan memiliki struktur data masuk terakhir, keluar pertama. Jadi, stack adalah kelas konkret nyata dan juga merupakan tipe data abstrak. Namun hal ini tidak selalu terjadi. Misalnya, Java memiliki kelas tumpukan, yang merupakan kelas konkret biasa, namun tumpukan juga merupakan tipe data abstrak, artinya mewakili struktur data masuk terakhir keluar pertama. Stack adalah kelas konkret dan tipe data abstrak.
Tipe Data Abstrak Adalah Konsep Teoretis Tipe data abstrak adalah konsep teoretis
Tipe data abstrak (ADT) adalah konsep teoretis yang tidak relevan dengan kata kunci pemrograman. Tipe data abstrak (ADT) adalah konsep teoretis yang tidak ada hubungannya dengan kata kunci pemrograman.
Jadi, jika kita memiliki tumpukan, kita memiliki struktur data masuk terakhir, keluar pertama, yang dapat kita dorong, munculkan, dan intip. Itulah yang kami harapkan dapat dilakukan oleh tumpukan. Apakah tumpukan diimplementasikan sebagai kelas konkret atau apa pun, tumpukan tersebut tetap memiliki gagasan tentang struktur data masuk terakhir, keluar pertama. Jadi, jika kita memiliki tumpukan, kita memiliki struktur data LIFO yang dapat kita dorong, munculkan, dan intip. Inilah yang kami harapkan dilakukan oleh tumpukan. Terlepas dari apakah tumpukan diimplementasikan sebagai kelas konkret, atau sesuatu yang lain, tumpukan tersebut masih memiliki konsep struktur data masuk pertama keluar pertama.
##Kesimpulan Kesimpulan
Menentukan Struktur Data Menentukan struktur data
Ada beberapa pertanyaan kunci yang perlu Anda tanyakan sebelum memutuskan struktur data Sebelum memutuskan struktur data, Anda perlu menanyakan beberapa pertanyaan kunci
- Berapa banyak data yang Anda miliki? Berapa banyak data yang Anda miliki?
- Seberapa sering perubahannya? Seberapa sering perubahannya?
- Apakah Anda perlu mengurutkannya, apakah Anda perlu mencarinya? Lebih Cepat Mengakses, Menyisipkan, atau Menghapus? Lebih Cepat Mengakses, Menyisipkan, atau Menghapus?
Jika suatu tempat di mana Anda hanya memiliki jumlah data yang sedikit, itu tidak akan menjadi masalah. Kecuali tentu saja, jumlah data tersebut sering berubah, atau Anda memiliki data dalam jumlah besar. Jika hanya ada sedikit data di suatu tempat, itu tidak masalah. Kecuali, tentu saja, volume data ini sangat sering berubah, atau Anda memiliki banyak data.### Struktur Data yang Tidak Dapat Diubah Struktur data yang tidak dapat diubah Sekarang, prinsip umum bahwa struktur data berukuran tetap atau tidak dapat diubah cenderung lebih cepat dan lebih kecil di memori dibandingkan struktur data yang dapat diubah. Sekarang, prinsip umumnya adalah bahwa struktur data yang tidak dapat diubah atau berukuran tetap cenderung lebih cepat dan lebih kecil di memori dibandingkan struktur yang dapat diubah.
Mengapa kita harus membatasi fitur array? Alasannya adalah, semakin banyak batasan yang Anda miliki (seperti ukuran tetap, tipe data tertentu,…), semakin cepat dan kecil struktur data Anda. Mengapa membatasi karakteristik array? Alasannya adalah semakin banyak batasan (seperti ukuran tetap, tipe data tertentu…), semakin cepat dan kecil struktur datanya.
Kelemahan dari memiliki struktur data dengan banyak fitur (tidak dibatasi) adalah kompiler tidak dapat mengalokasikan jumlah ruang yang ideal, oleh karena itu, ia harus menerapkan overhead untuk mendukung fleksibilitas struktur data (seperti tipe data yang berbeda,…). Kelemahan dari struktur data dengan banyak fitur (tidak dibatasi) adalah kompiler tidak dapat mengalokasikan jumlah ruang yang ideal, dan oleh karena itu, ia harus mengeluarkan overhead untuk mendukung fleksibilitas struktur data (seperti tipe data yang berbeda, …).
Tingkatkan Kinerja Kode Anda Tingkatkan kinerja kode
Jika Anda melihat kode yang ada untuk melihat apa yang perlu ditingkatkan, lihat kode apa pun yang menyimpan data paling banyak. Tidak ada cara yang lebih baik untuk benar-benar memanfaatkan struktur data ini selain ketika Anda melihat beberapa peningkatan kinerja yang bisa Anda peroleh, hanya dengan mengubah dari satu struktur ke struktur lainnya. Jika Anda melihat kode yang ada untuk mengetahui bagian mana yang memerlukan perbaikan, lihatlah di mana sebagian besar data disimpan. Ketika Anda melihat bahwa Anda bisa mendapatkan beberapa peningkatan kinerja hanya dengan mengubah dari satu struktur ke struktur lainnya, tidak ada cara yang lebih baik untuk mendapatkan hasil maksimal dari struktur data ini.
Perbedaan Bahasa Perbedaan bahasa
Algoritme yang digunakan pada setiap struktur data berbeda dari satu bahasa ke bahasa lainnya, dan implementasi sebenarnya dari struktur data berbeda dari satu bahasa ke bahasa lainnya. Jadi, ada baiknya untuk melihat lebih dekat dokumentasi bahasa Anda. Algoritme yang digunakan oleh setiap struktur data bervariasi dari satu bahasa ke bahasa lainnya, dan implementasi sebenarnya dari struktur data bervariasi dari satu bahasa ke bahasa lainnya. Oleh karena itu, penting untuk meninjau dokumentasi bahasa Anda dengan cermat.
What to read next
Want more posts about Algorithms?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #Algorithms?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home