10 algoritma penyortiran terbaik dijelaskan, dengan contoh
Feb 09, 2025 am 08:58 AM
mata utama
Asas dan Praktikal:- Artikel ini meneroka algoritma penyortiran mendalam, alat yang mesti dimiliki dalam sains komputer untuk organisasi data yang cekap dan memberikan pandangan praktikal melalui kod sampel pelbagai jenis algoritma.
- Analisis Teknikal dan Kebolehcapaian Teknikal: Ia termasuk pemeriksaan teknikal algoritma penyortiran, menganalisis kerumitan masa dan ruang menggunakan notasi besar O, dan juga menyediakan gambaran keseluruhan peringkat tinggi untuk pemahaman yang mudah. Liputan Komprehensif: Artikel ini secara komprehensif meneroka algoritma penyortiran, membincangkan kepentingannya, jenis yang berbeza dan algoritma utama yang perlu difahami, memberi tumpuan kepada aplikasi praktikal dan perbandingan algoritma.
- Apakah algoritma penyortiran?
- Pada dasarnya, algoritma penyortiran adalah program komputer yang menganjurkan data ke dalam pesanan tertentu, seperti susunan abjad atau berangka, biasanya dalam urutan menaik atau menurun.
Apakah tujuan algoritma penyortiran?
Algoritma menyusun terutamanya digunakan untuk menyusun semula sejumlah besar data dengan cara yang cekap untuk memudahkan untuk mencari dan memanipulasi mereka. Mereka juga digunakan untuk meningkatkan kecekapan algoritma lain seperti carian dan penggabungan yang bergantung kepada data yang disusun untuk beroperasi.
Mengapa algoritma penyortiran begitu penting?
Algoritma penyortiran digunakan untuk menganjurkan data dalam urutan tertentu, yang menjadikannya lebih mudah untuk mencari, mengakses, dan menganalisis data. Dalam banyak aplikasi, penyortiran adalah bahagian utama aliran pemprosesan data, dan kecekapan algoritma penyortiran boleh memberi kesan yang signifikan terhadap prestasi keseluruhan sistem.
Dalam pangkalan data: jenis digunakan untuk mendapatkan rekod dalam urutan tertentu, seperti tarikh, abjad atau urutan berangka. Ini membolehkan pengguna dengan cepat mencari data yang mereka perlukan tanpa mencari secara manual sejumlah besar data yang tidak disusun.
Dalam enjin carian:
- Susun hasil carian dalam urutan relevan. Dengan menyusun hasilnya dengan cara ini, pengguna dapat dengan cepat mencari maklumat yang mereka cari tanpa menapis hasil yang tidak relevan atau tidak relevan.
- Dalam banyak aplikasi saintifik dan kejuruteraan: Penyelidik boleh menjalankan analisis data dan simulasi untuk mendapatkan wawasan tentang sistem yang kompleks dan membuat ramalan yang lebih tepat mengenai tingkah laku masa depan.
- pelbagai jenis jenis dalam struktur data
- pelbagai jenis boleh didapati. Pilihan algoritma penyortiran bergantung kepada pelbagai faktor, seperti saiz set data, jenis data yang disusun, dan kerumitan masa dan ruang yang diperlukan.
- Susun dataset kecil. Ia boleh digunakan untuk menyusun dataset kecil dengan sehingga beberapa ratus elemen. Dalam situasi di mana prestasi bukan isu kritikal, penyortiran yang menggelegak boleh menjadi cara yang cepat dan mudah untuk menyusun senarai kecil.
- Data pra-disusun. Ia boleh digunakan sebagai langkah awal dalam algoritma penyortiran yang lebih kompleks. Sebagai contoh, jika data telah disusun sebahagiannya, data boleh disusun lagi menggunakan jenis gelembung sebelum menjalankan algoritma yang lebih kompleks.
- Susun data dengan sumber yang terhad. Ia berguna dalam situasi di mana sumber terhad, seperti dalam sistem tertanam atau mikrokontroler, kerana ia memerlukan sedikit memori dan kuasa pemprosesan.
- Blok bangunan untuk algoritma yang lebih kompleks. Ia sering digunakan dengan penyortiran gabungan atau penyortiran cepat, serta menyusun subarrays kecil menggunakan penyortiran sisipan, kerana algoritma lain ini dapat mencapai prestasi yang lebih baik pada dataset yang lebih besar.
Algoritma penyortiran berasaskan perbandingan
Algoritma ini membandingkan unsur -unsur dataset dan menentukan pesanan mereka berdasarkan hasil perbandingan. Contoh algoritma penyortiran berasaskan perbandingan termasuk jenis gelembung, memasukkan jenis, jenis cepat, jenis gabungan, dan jenis timbunan.
Algoritma penyortiran berasaskan bukan perbandingan
Algoritma ini tidak membandingkan unsur -unsur secara langsung, tetapi gunakan sifat -sifat lain dari dataset untuk menentukan pesanan mereka. Contoh-contoh algoritma penyortiran berasaskan bukan perbandingan termasuk penyortiran kiraan, penyortiran kardinaliti, dan penyortiran baldi.
Algoritma penyortiran di tempat
algoritma ini menyusun dataset dalam situ, yang bermaksud mereka tidak memerlukan memori tambahan untuk menyimpan hasil pertengahan. Contoh algoritma penyortiran dalam situ termasuk penyortiran gelembung, memasukkan penyortiran, penyortiran cepat, dan penyortiran bukit.
algoritma penyortiran stabil
Algoritma ini mengekalkan urutan relatif elemen seperti dataset. Contoh algoritma penyortiran yang stabil termasuk memasukkan jenis, gabungan, dan timsort.
Algoritma Penyortiran Adaptif
Algoritma ini menggunakan sebarang pesanan sedia ada dalam dataset untuk meningkatkan kecekapan mereka. Contoh algoritma penyortiran penyesuaian termasuk memasukkan penyisihan, penyortiran gelembung, dan timsort.
Algoritma Penyortiran Sepuluh Top yang perlu diketahui
Sekarang mari kita lihat pada sepuluh algoritma penyortiran teratas yang perlu anda perhatikan ketika memilih algoritma penyortiran.
Bubblestone
Bubblestone adalah algoritma penyortiran yang mudah yang melelehkan senarai item yang diberikan, membandingkan setiap sepasang item bersebelahan, dan menukarnya jika mereka tidak betul. Algoritma berterusan sehingga ia melintasi keseluruhan senarai tanpa bertukar -tukar apa -apa item. Penyortiran gelembung kadang -kadang dipanggil "penyortiran tenggelam".
Asal -usul Bubble Sort bermula pada akhir 1950 -an, dan Donald Knut mempopularkannya dalam klasiknya pada tahun 1968 The Art of Computer Programming. Sejak itu, ia telah digunakan secara meluas dalam pelbagai aplikasi, termasuk algoritma penyortiran penyusun, penyortiran unsur -unsur dalam pangkalan data, dan juga menyusun kad bermain.
kebaikan dan kekurangan penyortiran gelembung
Bubblestone dianggap sebagai algoritma penyortiran yang agak tidak cekap kerana kerumitan purata dan terburuknya adalah O (n^2). Ini menjadikannya kurang cekap daripada kebanyakan algoritma penyortiran lain, seperti jenis cepat atau gabungan.
Penerangan Teknikal: O (N^2) Kompleks bermakna bahawa masa yang diperlukan untuk algoritma diselesaikan adalah berkadar dengan kuadrat saiz input. Ini bermakna saiz input yang lebih besar akan menyebabkan algoritma selesai lebih lama. Sebagai contoh, jika anda menganggap algoritma yang menyusun pelbagai nombor, ia mungkin mengambil satu saat untuk menyusun pelbagai nombor sepuluh, tetapi mungkin mengambil masa empat saat untuk menyusun pelbagai 20 nombor. Ini kerana algoritma perlu membandingkan setiap elemen dalam array dengan setiap elemen lain, jadi ia harus membandingkan array yang lebih besar 20 kali dan array yang lebih kecil hanya 10 kali.
Walau bagaimanapun, sangat mudah difahami dan dilaksanakan dan sering digunakan sebagai pengenalan kepada penyortiran dan blok bangunan untuk algoritma yang lebih kompleks. Tetapi sekarang ia jarang digunakan dalam amalan.kes pengguna untuk menyusun gelembung
Bubblestone adalah algoritma mudah yang boleh digunakan untuk menyusun senarai atau tatasusunan elemen kecil. Ia mudah dilaksanakan dan difahami, jadi ia boleh digunakan dalam situasi di mana kesederhanaan dan kejelasan lebih penting daripada prestasi.
- tujuan pendidikan. Ia sering digunakan sebagai contoh algoritma penyortiran mudah dalam kursus sains komputer. Pelajar boleh mempelajari teknik penyortiran asas dan memahami bagaimana algoritma berfungsi dengan belajar menyusun gelembung.
- Melangkah melalui projek menggunakan gelung bersarang.
- Bandingkan item bersebelahan dalam senarai.
- Jika pesanan projek salah, bertukar projek.
- Teruskan sehingga senarai disusun.
def bubble_sort(items): for i in range(len(items)): for j in range(len(items)-1-i): if items[j] > items[j+1]: items[j], items[j+1] = items[j+1], items[j] return items items = [6,20,8,19,56,23,87,41,49,53] print(bubble_sort(items))Penyortiran Bubbling dalam JavaScript
function bubbleSort(items) { let swapped; do { swapped = false; for (let i = 0; i < items.length - 1; i++) { if (items[i] > items[i + 1]) { let temp = items[i]; items[i] = items[i + 1]; items[i + 1] = temp; swapped = true; } } } while (swapped); return items; } let items = [6, 20, 8, 19, 56, 23, 87, 41, 49, 53]; console.log(bubbleSort(items));(disebabkan oleh batasan ruang, hanya nama algoritma dan penerangan ringkas akan dikekalkan. Sila rujuk teks asal untuk kod lengkap dan penjelasan terperinci)
Masukkan Sort
Masukkan jenis adalah algoritma mudah yang membina array yang disusun akhir pada satu masa, dan dinamakan begitu kerana bagaimana unsur -unsur yang lebih kecil dimasukkan ke dalam kedudukan yang betul dalam array yang disusun.
Cepat jenis
Cepat adalah algoritma penyortiran yang popular dan konquer berdasarkan prinsip membahagikan array menjadi dua subarray-satu yang mengandungi elemen yang lebih kecil daripada elemen "pivot" dan yang lain yang mengandungi elemen yang lebih besar daripada elemen pivot. Kemudian rekursif menyusun dua subarray.
Bucket Sort
Hill Sort
Sort Hill menggunakan algoritma penyisihan memasukkan, tetapi bukannya menyusun keseluruhan senarai sekaligus, ia membahagikan senarai ke dalam sublists yang lebih kecil. Sublists ini kemudian disusun menggunakan algoritma sisipan sisipan, dengan itu mengurangkan bilangan swap yang diperlukan untuk menyusun senarai.
Idea asas jenis gabungan adalah untuk membahagikan senarai input ke dalam dua bahagian, menyusun setiap bilangan rekursif menggunakan jenis gabungan, dan kemudian menggabungkan dua bahagian yang disusun bersama -sama.
Pilih Sort
Pilih Sort berulang kali pilih elemen terkecil dari bahagian yang tidak disusun dari senarai dan swapnya dengan elemen pertama bahagian yang tidak disusun. Proses ini berterusan sehingga keseluruhan senarai disusun.
jenis hitam
Susun sikat membandingkan pasangan unsur -unsur yang jarak tertentu, dan jika mereka tidak betul, swapnya.
timsort
Algoritma Timsort berfungsi dengan membahagikan data input ke dalam subarray yang lebih kecil dan kemudian menyusun subarray ini menggunakan jenis sisipan.
Perbandingan semua algoritma penyortiran
Sila ambil perhatian bahawa kerumitan masa dan kerumitan spatial yang disenaraikan dalam jadual adalah
kerumitan kes terburuk, dan prestasi sebenar mungkin berbeza -beza bergantung kepada pelaksanaan tertentu dan data input. Apakah algoritma penyortiran yang paling biasa digunakan? Algoritma penyortiran yang paling biasa digunakan mungkin menyusun cepat. Ia digunakan secara meluas dalam banyak bahasa pengaturcaraan (termasuk C, C, Java, dan Python), serta dalam banyak aplikasi dan perpustakaan perisian. Penyortiran cepat disukai untuk kecekapan dan fleksibiliti dalam mengendalikan pelbagai jenis data dan sering digunakan sebagai algoritma penyortiran lalai dalam bahasa pengaturcaraan dan kerangka perisian. Walau bagaimanapun, algoritma penyortiran lain seperti jenis gabungan dan timsort juga digunakan secara meluas dalam pelbagai aplikasi kerana kecekapan dan keupayaan uniknya. (kandungan yang tinggal, seperti ringkasan, FAQ, dan lain -lain, telah ditinggalkan kerana batasan ruang.)
算法
時間復(fù)雜度
空間復(fù)雜度
原地排序
穩(wěn)定排序
自適應(yīng)排序
冒泡排序
O(n^2)
O(1)
是
是
否
快速排序
O(n log n)
O(log n)
是
否
是
桶排序
O(n k)
O(n k)
否
是
否
希爾排序
O(n log n)
O(1)
是
否
否
合并排序
O(n log n)
O(n)
否
是
否
選擇排序
O(n^2)
O(1)
是
否
否
基數(shù)排序
O(w·n)
O(w n)
否
是
否
梳排序
O(n^2)
O(1)
是
否
是
Timsort
O(n log n)
O(n)
是
是
是
Atas ialah kandungan terperinci 10 algoritma penyortiran terbaik dijelaskan, dengan contoh. 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)

Terdapat tiga cara biasa untuk memulakan permintaan HTTP dalam node.js: Gunakan modul terbina dalam, axios, dan nod-fetch. 1. Gunakan modul HTTP/HTTPS terbina dalam tanpa kebergantungan, yang sesuai untuk senario asas, tetapi memerlukan pemprosesan manual jahitan data dan pemantauan ralat, seperti menggunakan https.get () untuk mendapatkan data atau menghantar permintaan pos melalui .write (); 2.AXIOS adalah perpustakaan pihak ketiga berdasarkan janji. Ia mempunyai sintaks ringkas dan fungsi yang kuat, menyokong async/menunggu, penukaran JSON automatik, pemintas, dan lain -lain. Adalah disyorkan untuk memudahkan operasi permintaan tak segerak; 3.Node-Fetch menyediakan gaya yang serupa dengan pengambilan penyemak imbas, berdasarkan janji dan sintaks mudah

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Rangka kerja JavaScript mana yang terbaik? Jawapannya ialah memilih yang paling sesuai mengikut keperluan anda. 1. REACT adalah fleksibel dan bebas, sesuai untuk projek sederhana dan besar yang memerlukan penyesuaian tinggi dan keupayaan seni bina pasukan; 2. Angular menyediakan penyelesaian lengkap, sesuai untuk aplikasi peringkat perusahaan dan penyelenggaraan jangka panjang; 3. Vue mudah digunakan, sesuai untuk projek kecil dan sederhana atau perkembangan pesat. Di samping itu, sama ada terdapat timbunan teknologi sedia ada, saiz pasukan, kitaran hayat projek dan sama ada SSR diperlukan juga faktor penting dalam memilih rangka kerja. Singkatnya, tidak ada kerangka terbaik, pilihan terbaik adalah yang sesuai dengan keperluan anda.

Helo, pemaju JavaScript! Selamat datang ke berita JavaScript minggu ini! Minggu ini kami akan memberi tumpuan kepada: Pertikaian tanda dagangan Oracle dengan Deno, objek masa JavaScript baru disokong oleh pelayar, kemas kini Google Chrome, dan beberapa alat pemaju yang kuat. Mari mulakan! Pertikaian tanda dagangan Oracle dengan percubaan Deno Oracle untuk mendaftarkan tanda dagangan "JavaScript" telah menyebabkan kontroversi. Ryan Dahl, pencipta Node.js dan Deno, telah memfailkan petisyen untuk membatalkan tanda dagangan, dan dia percaya bahawa JavaScript adalah standard terbuka dan tidak boleh digunakan oleh Oracle

Janji adalah mekanisme teras untuk mengendalikan operasi tak segerak dalam JavaScript. Memahami panggilan rantaian, pengendalian ralat dan gabungan adalah kunci untuk menguasai aplikasi mereka. 1. Panggilan rantai mengembalikan janji baru melalui .then () untuk merealisasikan persamaan proses tak segerak. Setiap .then () menerima hasil sebelumnya dan boleh mengembalikan nilai atau janji; 2. Pengendalian ralat harus menggunakan .catch () untuk menangkap pengecualian untuk mengelakkan kegagalan senyap, dan boleh mengembalikan nilai lalai dalam tangkapan untuk meneruskan proses; 3. Gabungan seperti janji.all () (berjaya hanya berjaya selepas semua kejayaan), janji.race () (penyempurnaan pertama dikembalikan) dan janji.allsettled () (menunggu semua penyelesaian)

CACHEAPI adalah alat yang disediakan oleh penyemak imbas kepada permintaan rangkaian cache, yang sering digunakan bersempena dengan ServiceWorker untuk meningkatkan prestasi laman web dan pengalaman luar talian. 1. Ia membolehkan pemaju menyimpan sumber secara manual seperti skrip, helaian gaya, gambar, dan lain -lain; 2. Ia boleh memadankan tindak balas cache mengikut permintaan; 3. Ia menyokong memotong cache tertentu atau membersihkan seluruh cache; 4. Ia boleh melaksanakan keutamaan cache atau strategi keutamaan rangkaian melalui perkhidmatan pekerja yang mendengar acara mengambil; 5. Ia sering digunakan untuk sokongan luar talian, mempercepat kelajuan akses berulang, sumber utama dan kandungan kemas kini latar belakang; 6. Apabila menggunakannya, anda perlu memberi perhatian kepada kawalan versi cache, sekatan penyimpanan dan perbezaan dari mekanisme caching HTTP.

Kaedah terbina dalam JavaScript seperti .map (), .filter () dan .reduce () dapat memudahkan pemprosesan data; 1) .map () digunakan untuk menukar elemen satu hingga satu untuk menghasilkan tatasusunan baru; 2) .filter () digunakan untuk menapis elemen mengikut keadaan; 3) .reduce () digunakan untuk mengagregatkan data sebagai nilai tunggal; Penyalahgunaan harus dielakkan apabila digunakan, mengakibatkan kesan sampingan atau masalah prestasi.

Gelung acara JavaScript menguruskan operasi tak segerak dengan menyelaraskan susunan panggilan, webapis, dan barisan tugas. 1. Stack panggilan melaksanakan kod segerak, dan ketika menghadapi tugas -tugas yang tidak segerak, ia diserahkan kepada Webapi untuk diproses; 2. Selepas Webapi melengkapkan tugas di latar belakang, ia meletakkan panggil balik ke dalam barisan yang sama (tugas makro atau tugas mikro); 3. Loop acara memeriksa sama ada timbunan panggilan kosong. Jika ia kosong, panggilan balik diambil dari barisan dan ditolak ke dalam tumpukan panggilan untuk pelaksanaan; 4. Tugas -tugas mikro (seperti janji. 5. Memahami gelung acara membantu mengelakkan menyekat benang utama dan mengoptimumkan pesanan pelaksanaan kod.
