


Penjelasan terperinci tentang senarai struktur data Javascript dan kemahiran algoritma_javascript
Kata Pengantar: Dalam kehidupan seharian, orang sering menggunakan senarai Sebagai contoh, apabila kita kadang-kadang pergi membeli-belah, untuk membeli semua barang, kita boleh membuat senarai barang yang ingin dibeli sebelum pergi senarai yang kita gunakan atau semasa kita di sekolah semasa kita masih muda, selepas setiap peperiksaan, sekolah akan menyenaraikan kedudukan dan transkrip sepuluh pelajar terbaik yang mendapat markah dalam peperiksaan, dan sebagainya . Kami juga menggunakan senarai dalam komputer kami, jadi di manakah senarai yang sesuai untuk digunakan? Di manakah ia tidak sesuai untuk digunakan?
Sesuai untuk digunakan: Apabila tidak terdapat banyak elemen dalam senarai, anda boleh menggunakan senarai itu, kerana kecekapan adalah sangat tinggi apabila mencari atau menyusun elemen dalam senarai sebaliknya: Jika terdapat banyak elemen dalam senarai, maka Senarai tidak lagi sesuai.
1: Takrif jenis data abstrak senarai
Untuk mereka bentuk jenis data abstrak senarai, kami perlu memberikan takrif senarai, termasuk atribut yang perlu ada pada senarai, operasi yang perlu dilakukan pada senarai, dsb.
Senarai ialah set data yang tersusun. Item data dalam setiap senarai dipanggil elemen. Dalam JavaScript, elemen dalam senarai boleh terdiri daripada sebarang jenis data. Tiada persetujuan terdahulu tentang berapa banyak elemen boleh disimpan dalam senarai. Walau bagaimanapun, bilangan elemen dihadkan oleh memori program dalam penggunaan sebenar.
Sekarang kami ingin mereka bentuk senarai, kemudian kami boleh memikirkan tentang melaksanakan senarai dan atribut dan kaedah yang harus terkandung di dalamnya. Sudah tentu, reka bentuk berikut saya berdasarkan demo dalam buku "Struktur dan Algoritma Javascript". Setakat ini kita boleh belajar bagaimana mereka bentuk kelas abstrak kita sendiri sebagai rujukan apabila kita menulis program pada masa hadapan Perkara yang paling penting bagi kita untuk mengkaji demo dalam buku sekarang ialah mempelajari idea reka bentuk mereka dan cara menulis kod. Mereka mempunyai atribut berikut;
1. listSize (atribut): Gunakan pembolehubah listSize untuk menyimpan bilangan elemen dalam senarai.
2. pos (atribut): Kedudukan semasa senarai, indeks elemen.
3. DataStore (atribut): Mulakan tatasusunan kosong untuk menyimpan bilangan elemen. Jika kita ingin mendapatkan elemen tertentu dalam senarai, kita boleh menggunakan atribut pos di atas seperti dataStore[pos];
2: Bagaimana untuk melaksanakan kelas senarai
Mengikut jenis data abstrak senarai yang ditakrifkan di atas, kita boleh melaksanakan kelas Senarai berikut melalui mod prototaip pembina seperti berikut.
function List() {
// Bilangan elemen dalam senarai
This.listSize = 0;
// Apakah kedudukan semasa senarai
This.pos = 0;
// Mulakan tatasusunan kosong untuk menyimpan elemen senarai
This.dataStore = [];
}
List.prototype = {
//Tambah elemen pada penghujung senarai
tambahkan: fungsi(elemen) {
var self = ini;
self.dataStore[this.listSize] = elemen;
},
// Alih keluar elemen daripada senarai
Alih keluar: fungsi(elemen) {
var self = ini;
var curIndex = self.find(elemen);
Jika(curIndex > -1) {
self.dataStore.splice(curIndex,1);
—self.listSize;
kembali benar;
}
kembali palsu;
},
// Cari elemen dalam senarai dan kembalikan indeks
Cari: fungsi(elemen) {
var self = ini;
for(var i = 0,dataLen = self.dataStore.length; i < dataLen; i ) {
If(self.dataStore[i] == elemen) {
kembalikan i;
}
}
kembali -1;
},
// Kembalikan bilangan elemen dalam senarai
panjang: function() {
kembalikan this.listSize;
},
// Paparkan elemen dalam senarai
toString: function(){
kembalikan this.dataStore;
},
/*
* Masukkan elemen selepas elemen yang ditentukan
* elemen semasa elemen @param
* @param elementAfter Masukkan elemen semasa selepas elemen ini
*/
masukkan: fungsi(elemen,elemenSelepas){
var self = ini;
var insertPos = self.find(elementAfter);
Jika(masukkanPos > -1) {
self.dataStore.splice(insertPos 1,0,element);
self.listSize;
kembali benar;
}
kembali palsu;
},
// Kosongkan semua elemen dalam senarai
Jelas: function() {
padamkan ini.dataStore;
This.dataStore = [];
This.listSize = this.pos = 0;
},
// Tentukan sama ada elemen yang diberikan berada dalam senarai
mengandungi: fungsi(elemen) {
var self = ini;
for(var i = 0,ilen = self.dataStore.length; i < ilen; i ) {
If(self.dataStore[i] == elemen) {
kembali benar;
}
}
kembali palsu;
},
// Alihkan elemen semasa dalam senarai ke kedudukan pertama
Hadapan: function(){
This.pos = 0;
},
// Alihkan elemen semasa dalam senarai ke kedudukan terakhir
Tamat: function(){
This.pos = this.listSize - 1;
},
// Alihkan kedudukan semasa ke belakang satu kedudukan
Sebelumnya: function(){
Jika(this.pos > 0) {
—ini.pos;
}
},
// Gerakkan kedudukan semasa ke hadapan satu kedudukan
Seterusnya: function(){
If(this.pos < this.listSize - 1) {
This.pos;
}
},
// Kembalikan kedudukan semasa senarai
CurPos: function(){
kembalikan ini.pos;
},
//Alihkan kedudukan semasa ke kedudukan yang ditentukan
MoveTo: fungsi(n) {
This.pos = n;
},
// Kembalikan elemen pada kedudukan semasa
GetElement:function(){
kembalikan this.dataStore[this.pos];
}
};
Seperti di atas: Laksanakan kelas senarai, termasuk seberapa banyak kaedah seperti di atas Sudah tentu, kita juga boleh melanjutkan beberapa kaedah lain untuk memperkayakan pelaksanaan kelas senarai Perkara yang paling penting ialah mempelajari kaedah pengekodan di atas.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

Lapisan bawah fungsi C++ sort menggunakan isihan gabungan, kerumitannya ialah O(nlogn), dan menyediakan pilihan algoritma pengisihan yang berbeza, termasuk isihan pantas, isihan timbunan dan isihan stabil.

Apabila menggunakan struktur data kompleks dalam Java, Comparator digunakan untuk menyediakan mekanisme perbandingan yang fleksibel. Langkah-langkah khusus termasuk: mentakrifkan kelas pembanding, menulis semula kaedah bandingkan untuk menentukan logik perbandingan. Buat contoh pembanding. Gunakan kaedah Collections.sort, menghantar contoh koleksi dan pembanding.

01Garis prospek Pada masa ini, sukar untuk mencapai keseimbangan yang sesuai antara kecekapan pengesanan dan hasil pengesanan. Kami telah membangunkan algoritma YOLOv5 yang dipertingkatkan untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi, menggunakan piramid ciri berbilang lapisan, strategi kepala pengesanan berbilang dan modul perhatian hibrid untuk meningkatkan kesan rangkaian pengesanan sasaran dalam imej penderiaan jauh optik. Menurut set data SIMD, peta algoritma baharu adalah 2.2% lebih baik daripada YOLOv5 dan 8.48% lebih baik daripada YOLOX, mencapai keseimbangan yang lebih baik antara hasil pengesanan dan kelajuan. 02 Latar Belakang & Motivasi Dengan perkembangan pesat teknologi penderiaan jauh, imej penderiaan jauh optik resolusi tinggi telah digunakan untuk menggambarkan banyak objek di permukaan bumi, termasuk pesawat, kereta, bangunan, dll. Pengesanan objek dalam tafsiran imej penderiaan jauh

1. Latar Belakang Pembinaan 58 Portrait Platform Pertama sekali, saya ingin berkongsi dengan anda latar belakang pembinaan 58 Portrait Platform. 1. Pemikiran tradisional platform pemprofilan tradisional tidak lagi mencukupi Membina platform pemprofilan pengguna bergantung pada keupayaan pemodelan gudang data untuk menyepadukan data daripada pelbagai barisan perniagaan untuk membina potret pengguna yang tepat untuk memahami tingkah laku, minat pengguna dan keperluan, dan menyediakan keupayaan sampingan, akhirnya, ia juga perlu mempunyai keupayaan platform data untuk menyimpan, bertanya dan berkongsi data profil pengguna dan menyediakan perkhidmatan profil dengan cekap. Perbezaan utama antara platform pemprofilan perniagaan binaan sendiri dan platform pemprofilan pejabat pertengahan ialah platform pemprofilan binaan sendiri menyediakan satu barisan perniagaan dan boleh disesuaikan atas permintaan platform pertengahan pejabat berkhidmat berbilang barisan perniagaan, mempunyai kompleks pemodelan, dan menyediakan lebih banyak keupayaan umum. 2.58 Potret pengguna latar belakang pembinaan potret di platform tengah 58

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Mengira kedengaran mudah, tetapi sangat sukar untuk dilaksanakan dalam amalan. Bayangkan anda diangkut ke hutan hujan tropika yang asli untuk menjalankan banci hidupan liar. Setiap kali anda melihat haiwan, ambil gambar. Kamera digital hanya merekodkan jumlah bilangan haiwan yang dijejaki, tetapi anda berminat dengan bilangan haiwan unik, tetapi tiada statistik. Jadi apakah cara terbaik untuk mengakses populasi haiwan yang unik ini? Pada ketika ini, anda mesti berkata, mula mengira sekarang dan akhirnya bandingkan setiap spesies baharu daripada foto ke senarai. Walau bagaimanapun, kaedah pengiraan biasa ini kadangkala tidak sesuai untuk jumlah maklumat sehingga berbilion-bilion penyertaan. Para saintis komputer dari Institut Statistik India, UNL, dan Universiti Nasional Singapura telah mencadangkan algoritma baharu - CVM. Ia boleh menganggarkan pengiraan item yang berbeza dalam senarai panjang.

Pokok AVL ialah pokok carian binari seimbang yang memastikan operasi data yang pantas dan cekap. Untuk mencapai keseimbangan, ia melakukan operasi belok kiri dan kanan, melaraskan subpokok yang melanggar keseimbangan. Pokok AVL menggunakan pengimbangan ketinggian untuk memastikan ketinggian pokok sentiasa kecil berbanding bilangan nod, dengan itu mencapai kerumitan masa logaritma (O(logn)) operasi carian dan mengekalkan kecekapan struktur data walaupun pada set data yang besar.
