Algoritma 7 atas untuk struktur data di Python - Analytics Vidhya
Apr 16, 2025 am 09:28 AMPengenalan
Pembangunan perisian yang cekap bergantung kepada pemahaman yang kuat tentang algoritma dan struktur data. Python, yang terkenal dengan kemudahan penggunaannya, menyediakan struktur data terbina dalam seperti senarai, kamus, dan set. Walau bagaimanapun, kuasa sebenar dilepaskan dengan menggunakan algoritma yang sesuai untuk struktur ini. Algoritma pada dasarnya adalah set peraturan atau proses untuk menyelesaikan masalah. Penggunaan gabungan algoritma dan struktur data mengubah skrip asas ke dalam aplikasi yang sangat dioptimumkan.
Artikel ini meneroka tujuh algoritma penting untuk struktur data Python.
Jadual Kandungan
- Pengenalan
- Kepentingan algoritma dalam struktur data python
- Tujuh algoritma utama untuk struktur data python
- Carian binari
- Gabungkan jenis
- Jenis cepat
- Algoritma Dijkstra
- Pencarian terlebih dahulu (BFS)
- Carian Kedalaman Pertama (DFS)
- Hashing
- Kesimpulan
Kepentingan algoritma dalam struktur data python
Algoritma yang berkesan adalah penting kerana beberapa sebab:
- Prestasi yang dipertingkatkan: Algoritma yang direka dengan baik, ditambah dengan struktur data yang sesuai, meminimumkan kerumitan masa dan ruang, menghasilkan program yang lebih cepat dan lebih cekap. Sebagai contoh, carian binari pada pokok carian binari secara dramatik mengurangkan masa carian.
- Skalabilitas untuk dataset yang besar: Algoritma yang cekap adalah penting untuk mengendalikan dataset besar-besaran, memastikan pemprosesan tetap cepat dan cekap sumber. Tanpa algoritma yang dioptimumkan, operasi pada struktur data yang besar menjadi komputasi mahal.
- Organisasi data yang lebih baik: Algoritma membantu menyusun data dalam struktur, memudahkan carian dan manipulasi. Algoritma menyusun seperti Quicksort dan Mergesort mengatur elemen dalam tatasusunan atau senarai yang dipautkan untuk akses yang lebih mudah.
- Penggunaan memori yang dioptimumkan: Algoritma menyumbang kepada penyimpanan yang cekap dengan meminimumkan penggunaan memori. Fungsi hash, misalnya, mengedarkan data merentasi jadual hash, mengurangkan masa carian.
- Memanfaatkan Fungsi Perpustakaan: Banyak perpustakaan python (numpy, panda, tensorflow) bergantung pada algoritma canggih untuk manipulasi data. Memahami algoritma ini membolehkan pemaju menggunakan perpustakaan ini dengan berkesan.
Tujuh algoritma utama untuk struktur data python
Mari kita periksa tujuh algoritma penting:
1. Carian binari
Carian binari adalah algoritma yang sangat cekap untuk mencari item tertentu dalam senarai yang disusun . Ia berfungsi dengan berulang kali membahagikan selang carian pada separuh. Jika nilai sasaran kurang daripada elemen pertengahan, carian berterusan pada bahagian bawah; Jika tidak, ia berterusan di bahagian atas. Kerumitan masa logaritma ini (O (log n)) menjadikannya lebih cepat daripada carian linear untuk dataset besar.
Langkah Algoritma
- Inisialisasi: Tetapkan
left
ke 0 danright
ke panjang array minus 1. - Penyebaran: sementara
left
kurang dari atau sama denganright
:- Kirakan indeks pertengahan (
mid
). - Bandingkan elemen pertengahan dengan nilai sasaran. Jika sama, kembali
mid
. - Jika sasaran kurang daripada elemen pertengahan,
right
kini kemid - 1
. - Jika tidak, kemas kini
left
hinggamid 1
.
- Kirakan indeks pertengahan (
- Sasaran tidak dijumpai: Jika gelung selesai tanpa mencari sasaran, kembali -1.
Pelaksanaan kod (ilustrasi)
def binary_search (arr, sasaran): # ... (pelaksanaan seperti dalam teks asal)
Carian binari tidak ternilai dalam situasi yang memerlukan carian pesat, seperti pengindeksan pangkalan data.
2. Gabungkan jenis
Gabungan Sort adalah algoritma membahagikan-dan-konquer yang secara rekursif membahagikan senarai yang tidak disusun ke dalam sublists yang lebih kecil sehingga setiap sublist mengandungi hanya satu elemen. Sublists ini kemudiannya berulang kali digabungkan untuk menghasilkan sublists yang disusun baru sehingga satu senarai disusun diperolehi. Kerumitan masa adalah O (n log n), menjadikannya cekap untuk dataset yang besar.
Langkah Algoritma
- Bahagikan: Rekursif berpecah array menjadi dua bahagian sehingga setiap separuh mengandungi hanya satu elemen.
- Conquer: Sort Recursively setiap sublist (kes asas: satu senarai elemen sudah disusun).
- Gabungan: Gabungkan penyusun yang disusun ke dalam satu senarai yang disusun dengan membandingkan unsur -unsur dari setiap sublist dan meletakkan elemen yang lebih kecil ke dalam senarai yang dihasilkan.
Pelaksanaan kod (ilustrasi)
def merge_sort (arr): # ... (pelaksanaan seperti dalam teks asal)
Gabungan jenis amat sesuai untuk menyusun senarai yang dipautkan dan mengendalikan dataset besar yang mungkin tidak sesuai sepenuhnya dalam ingatan.
3. Susun cepat
Susu cepat, satu lagi algoritma pembahagian dan penonton, memilih elemen 'pivot' dan partisi unsur-unsur lain menjadi dua sub-array, mengikut sama ada mereka kurang daripada atau lebih besar daripada pivot. Proses ini digunakan secara rekursif untuk sub-array sehingga keseluruhan array disusun. Walaupun kerumitan masa terburuknya adalah O (n2), prestasi purata kesnya adalah O (N log N), menjadikannya algoritma penyortiran yang sangat praktikal.
Langkah Algoritma
- Pemilihan Pivot: Pilih elemen pivot (pelbagai strategi wujud).
- Pembahagian: Susun semula array supaya unsur -unsur yang lebih kecil daripada pivot sebelum itu, dan unsur -unsur yang lebih besar adalah selepas itu.
- RECURSION: Recursif memohon jenis cepat ke sub-aray sebelum dan selepas pivot.
Pelaksanaan kod (ilustrasi)
def quick_sort (arr): # ... (pelaksanaan seperti dalam teks asal)
Kecekapan cepat menjadikannya pilihan yang popular di banyak perpustakaan dan kerangka.
4. Algoritma Dijkstra
Algoritma Dijkstra mendapati laluan terpendek dari nod sumber tunggal ke semua nod lain dalam graf dengan berat kelebihan negatif. Ia secara berulang memilih nod dengan jarak tentatif terkecil dari sumber dan mengemas kini jarak jirannya.
Langkah Algoritma
- Inisialisasi: Berikan jarak tentatif ke setiap nod: sifar untuk nod sumber, dan tak terhingga untuk semua nod lain.
- Penyebaran: Walaupun terdapat nod yang tidak disahkan:
- Pilih nod yang tidak disokong dengan jarak tentatif terkecil.
- Bagi setiap jirannya, hitung jarak melalui nod yang dipilih. Jika jarak ini lebih pendek daripada jarak tentatif semasa, kemas kini jarak tentatif jiran.
- Penamatan: Algoritma tamat apabila semua nod telah dikunjungi atau giliran keutamaan kosong.
Pelaksanaan kod (ilustrasi)
Import Heapq Def Dijkstra (Graf, Mula): # ... (pelaksanaan seperti dalam teks asal)
Algoritma Dijkstra mempunyai aplikasi dalam sistem GPS, penghalaan rangkaian, dan pelbagai masalah laluan.
5. Carian Lebar Pertama (BFS)
BFS adalah algoritma traversal graf yang meneroka tahap graf mengikut tahap. Ia bermula pada nod akar dan melawat semua jirannya sebelum berpindah ke peringkat jiran seterusnya. Ia berguna untuk mencari jalan terpendek dalam graf yang tidak berat.
Langkah Algoritma
- Inisialisasi: Mulakan dengan barisan yang mengandungi nod akar dan satu set untuk mengesan nod yang dikunjungi.
- Penyebaran: Walaupun barisan tidak kosong:
- Dequeue nod.
- Jika tidak dikunjungi, tandakannya sebagai dikunjungi dan enqueue jiran -jirannya yang tidak disokong.
Pelaksanaan kod (ilustrasi)
dari koleksi import deque def bfs (graf, mula): # ... (pelaksanaan seperti dalam teks asal)
BFS mendapati aplikasi dalam rangkaian sosial, rangkaian peer-to-peer, dan enjin carian.
6. Carian Kedalaman Pertama (DFS)
DFS adalah satu lagi algoritma traversal graf yang meneroka graf dengan pergi sejauh mungkin di sepanjang setiap cawangan sebelum mundur. Ia menggunakan timbunan (atau rekursi) untuk menjejaki nod untuk dikunjungi.
Langkah Algoritma
- Inisialisasi: Mulakan dengan timbunan yang mengandungi nod akar dan satu set untuk mengesan nod yang dikunjungi.
- Iterasi: Walaupun timbunan tidak kosong:
- Pop nod.
- Jika tidak dikunjungi, tandakannya sebagai dikunjungi dan tolak jiran -jirannya yang tidak disokong ke timbunan.
Pelaksanaan kod (ilustrasi)
def dfs_iterative (graf, mula): # ... (pelaksanaan seperti dalam teks asal)
DFS digunakan dalam penyortiran topologi, pengesanan kitaran, dan menyelesaikan teka -teki.
7. Hashing
Hashing adalah teknik untuk pemetaan kunci kepada indeks dalam jadual hash untuk mendapatkan semula data yang cekap. Fungsi hash mengubah kunci ke dalam indeks, membolehkan carian cepat, penyisipan, dan penghapusan. Mekanisme pengendalian perlanggaran diperlukan untuk menangani situasi di mana peta kunci yang berbeza ke indeks yang sama.
Langkah Algoritma
- Fungsi hash: Pilih fungsi hash untuk memetakan kunci kepada indeks.
- Sisipan: Kirakan indeks menggunakan fungsi hash dan masukkan pasangan nilai kunci ke dalam baldi yang sepadan (penangguhan perlanggaran).
- Lookup/penghapusan: Gunakan fungsi hash untuk mencari indeks dan mengambil/memadam pasangan nilai kunci.
Pelaksanaan kod (ilustrasi)
Kelas Hashtable: # ... (pelaksanaan seperti dalam teks asal)
Jadual hash adalah asas dalam pangkalan data, cache, dan aplikasi lain yang memerlukan akses data cepat.
Kesimpulan
Pemahaman algoritma yang kukuh dan interaksi mereka dengan struktur data adalah yang paling penting untuk pengaturcaraan Python yang cekap. Algoritma ini adalah alat penting untuk mengoptimumkan prestasi, meningkatkan skalabiliti, dan menyelesaikan masalah yang kompleks. Dengan menguasai teknik ini, pemaju boleh membina aplikasi yang mantap dan berprestasi tinggi.
Atas ialah kandungan terperinci Algoritma 7 atas untuk struktur data di Python - Analytics Vidhya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Ingat banjir model Cina sumber terbuka yang mengganggu industri Genai awal tahun ini? Walaupun Deepseek mengambil sebahagian besar tajuk utama, Kimi K1.5 adalah salah satu nama yang terkenal dalam senarai. Dan model itu agak sejuk.

Menjelang pertengahan tahun 2025, AI "perlumbaan senjata" dipanaskan, dan Xai dan Anthropic kedua-duanya mengeluarkan model perdana mereka, Grok 4 dan Claude 4. Kedua-dua model ini berada di hujung falsafah reka bentuk dan platform penempatan, namun mereka

Tetapi kita mungkin tidak perlu menunggu 10 tahun untuk melihatnya. Malah, apa yang boleh dianggap sebagai gelombang pertama yang benar-benar berguna, mesin seperti manusia sudah ada di sini. Tahun -tahun kebelakangan ini telah melihat beberapa prototaip dan model pengeluaran melangkah keluar dari T

Sehingga tahun sebelumnya, kejuruteraan segera dianggap sebagai kemahiran penting untuk berinteraksi dengan model bahasa yang besar (LLM). Walau bagaimanapun, baru -baru ini, LLM telah maju dengan ketara dalam kebolehan pemikiran dan pemahaman mereka. Sememangnya, jangkaan kami

Saya pasti anda mesti tahu mengenai ejen AI umum, Manus. Ia dilancarkan beberapa bulan yang lalu, dan selama bulan -bulan, mereka telah menambah beberapa ciri baru kepada sistem mereka. Sekarang, anda boleh menjana video, membuat laman web, dan melakukan banyak

Ramai individu memukul gim dengan semangat dan percaya mereka berada di jalan yang betul untuk mencapai matlamat kecergasan mereka. Tetapi hasilnya tidak ada kerana perancangan diet yang tidak baik dan kekurangan arah. Menyewa Jurulatih Peribadi Al

Dibina di atas enjin kedalaman saraf proprietari Leia, aplikasinya memproses imej dan menambah kedalaman semula jadi bersama -sama dengan gerakan simulasi -seperti kuali, zum, dan kesan paralaks -untuk membuat gulungan video pendek yang memberikan kesan melangkah ke SCE

Satu kajian baru dari penyelidik di King's College London dan University of Oxford berkongsi hasil apa yang berlaku ketika Openai, Google dan Anthropic dibuang bersama dalam pertandingan cutthroat berdasarkan dilema banduan berulang. Ini tidak
