Rumah masalah biasa Apakah algoritma pengisihan yang stabil?

Apakah algoritma pengisihan yang stabil?

Sep 28, 2021 pm 06:55 PM
algoritma pengisihan

Algoritma pengisihan yang stabil termasuk: 1. Isih buih 3. Isih sisipan; Isih timbunan.

Apakah algoritma pengisihan yang stabil?

Persekitaran pengendalian tutorial ini: sistem Windows 10, komputer Dell G3.

Analisis kestabilan algoritma pengisihan biasa dan berikan sebab mudah untuk setiap algoritma.

Algoritma pengisihan stabil:

1 pengisihan adalah untuk menggerakkan elemen kecil ke hadapan atau menggerakkan elemen besar ke belakang. Perbandingan ialah perbandingan dua elemen yang bersebelahan, dan pertukaran juga berlaku antara kedua-dua elemen ini. Jadi, jika dua elemen adalah sama, saya tidak fikir anda akan menukarnya dengan membosankan.

Jika dua elemen yang sama tidak bersebelahan, maka walaupun kedua-duanya bersebelahan melalui pertukaran pasangan sebelumnya, mereka tidak akan ditukar pada masa ini, jadi susunan elemen yang sama tidak berubah, jadi terdapat jenis Bubble risiko ialah algoritma pengisihan yang stabil.

2. Pengisihan pilihan

Isih pilihan memilih elemen semasa terkecil untuk setiap kedudukan, contohnya, memilih yang terkecil untuk kedudukan pertama dan menetapkan elemen terkecil kepada Elemen yang tinggal Pilih elemen kedua terkecil untuk elemen kedua, dan seterusnya, sehingga elemen ke tidak perlu dipilih, kerana ia adalah satu-satunya elemen terbesar yang tinggal. Kemudian, dalam pemilihan, jika elemen semasa adalah lebih kecil daripada elemen, dan elemen kecil muncul selepas elemen yang sama dengan elemen semasa, maka kestabilan akan dimusnahkan selepas pertukaran.

agak sukar untuk disebut Sebagai contoh, dalam urutan n-1, kita tahu bahawa memilih

elemen ke

dalam hantaran pertama akan ditukar dengan 5 8 5 2 9, kemudian ada. akan menjadi 1 dimusnahkan, jadi isihan pemilihan bukan algoritma pengisihan yang stabil. 5223. Isih sisipan 5

Isih sisipan memasukkan satu elemen pada satu masa berdasarkan urutan kecil yang telah dipesan. Sudah tentu, pada mulanya, urutan tertib kecil ini hanya mempunyai satu elemen, iaitu elemen pertama. Perbandingan bermula dari penghujung urutan tertib, iaitu elemen yang ingin anda masukkan dibandingkan dengan yang terbesar yang telah disusun Jika lebih besar daripadanya, masukkan terus di belakangnya, jika tidak, teruskan melihat ke hadapan sehingga anda cari elemen yang sepatutnya dimasukkan ke dalamnya. Jika ia menjumpai elemen yang sama dengan elemen yang disisipkan, maka elemen yang disisipkan meletakkan elemen yang akan disisipkan selepas elemen yang sama.

Oleh itu, susunan unsur yang sama tidak berubah.

4. Isih cepat

Isih cepat mempunyai dua arah. > ialah pusat Subskrip tatasusunan unsur biasanya diambil sebagai elemen tatasusunan. Subskrip di sebelah kanan pergi ke kiri, apabila

.

a[i] <= a[center_index]Jika i atau j tidak boleh berjalan, center_index, tukarkan 0 dan j, dan ulangi proses di atas sehingga a[j]>a[center_index]. Tukar

dan

untuk melengkapkan isihan pantas. Apabila elemen pusat dan i<=j ditukar, ia berkemungkinan besar akan mengganggu kestabilan elemen sebelumnya Sebagai contoh, urutannya ialah a[i], dan kini elemen pusat a[j] dan i>j (a[j]. elemen ke, seterusnya Pertukaran (bernombor bermula dari a[center_index]) akan mengganggu kestabilan elemen 3, jadi isihan pantas ialah algoritma pengisihan yang tidak stabil Ketidakstabilan berlaku pada masa apabila elemen pusat dan a[j] ditukar. a[j]5 3 3 4 3 8 9 10 1155. Isih Gabung 351Isih Gabung secara rekursif membahagikan jujukan kepada jujukan pendek ialah jujukan pendek hanya mempunyai elemen

(dianggap sebagai dipesan terus) Atau

jujukan ( perbandingan dan pertukaran), dan kemudian gabungkan setiap jujukan segmen tersusun ke dalam urutan panjang tertib, dan teruskan bergabung sehingga jujukan asal semuanya diisih. Ia boleh didapati bahawa apabila terdapat atau

elemen,

elemen tidak akan ditukar Jika 1 elemen sama saiz, tiada siapa yang akan menukarnya dengan sengaja, yang tidak akan memusnahkan kestabilan. 21Jadi, dalam proses penggabungan urutan tertib pendek, adakah kestabilan itu musnah? 12Tidak, semasa proses penggabungan kami boleh memastikan bahawa jika kedua-dua elemen semasa adalah sama, kami akan menyimpan elemen urutan sebelumnya di hadapan jujukan hasil, sekali gus memastikan kestabilan. Oleh itu, pengisihan gabungan juga merupakan algoritma pengisihan yang stabil. 12

6. Isih Radix

Isih radix adalah untuk mengisih mengikut tertib rendah dahulu, dan kemudian mengumpulkan >

Dan seterusnya, sehingga kedudukan tertinggi. Kadang-kadang sesetengah atribut mempunyai susunan keutamaan Mereka diisih mengikut keutamaan rendah dahulu, kemudian mengikut keutamaan tinggi Urutan terakhir ialah mereka yang mempunyai keutamaan tinggi didahulukan, dan yang mempunyai keutamaan tinggi dan keutamaan yang sama didahulukan. Isihan Radix adalah berdasarkan isihan berasingan dan koleksi berasingan, jadi ia adalah algoritma isihan yang stabil.

7. Pengisihan bukit (cangkang)

Isihan bukit ialah penyisipan unsur mengikut panjang penyegerakan yang berbeza Apabila elemen sangat tidak teratur pada permulaannya saiz langkah adalah yang terbesar, jadi bilangan elemen dalam isihan sisipan adalah kecil dan kelajuannya sangat pantas.

Apabila elemen pada asasnya disusun dan saiz langkahnya kecil, isihan sisipan adalah sangat cekap untuk urutan tertib. Oleh itu, kerumitan masa pengisihan Bukit akan lebih baik daripada O(n^2). Disebabkan oleh pelbagai pengisihan sisipan, kita tahu bahawa satu pengisihan sisipan adalah stabil dan tidak akan mengubah susunan relatif unsur yang sama Walau bagaimanapun, dalam proses pengisihan sisipan yang berbeza, unsur yang sama mungkin bergerak dalam pengisihan sisipan masing-masing, dan akhirnya kestabilan mereka akan. perubahan.

8. Isih timbunan

Kita tahu bahawa struktur timbunan ialah anak-anak nod i ialah nod 2 * i dan 2 * i 1, dan timbunan atas besar memerlukan nod induk Lebih besar daripada atau sama dengan nod anak 2nya, timbunan atas kecil memerlukan nod induk kurang daripada atau sama dengan nod anak 2nya. Dalam urutan dengan panjang n, proses pengisihan timbunan adalah untuk memilih yang terbesar (timbunan atas besar) atau yang terkecil (timbunan atas kecil) bermula dari n / 2th dan nod anaknya dengan jumlah 3 nilai ini 3 Pilihan antara elemen pastinya tidak memusnahkan kestabilan. Tetapi apabila memilih elemen untuk nod induk n / 2-1, n/2-2, ...1, kestabilan akan musnah. Ada kemungkinan bahawa n/2nod induk ke menukar elemen berikut, tetapi n/2-1nod induk ke tidak menukar elemen yang serupa berikut, maka kestabilan antara dua elemen yang sama dimusnahkan. Oleh itu, isihan timbunan bukanlah algoritma pengisihan yang stabil.

Untuk lebih banyak pengetahuan berkaitan, sila lawati ruangan Soalan Lazim!

Atas ialah kandungan terperinci Apakah algoritma pengisihan yang stabil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Isu reka bentuk eksperimen yang kompleks dalam pasaran dua belah Kuaishou Isu reka bentuk eksperimen yang kompleks dalam pasaran dua belah Kuaishou Apr 15, 2023 pm 07:40 PM

1. Latar belakang masalah 1. Pengenalan kepada eksperimen pasaran dua belah Pasaran dua belah, iaitu platform, merangkumi dua peserta, pengeluar dan pengguna, dan kedua-dua pihak mempromosikan satu sama lain. Sebagai contoh, Kuaishou mempunyai pengeluar video dan pengguna video, dan kedua-dua identiti mungkin bertindih pada tahap tertentu. Eksperimen dua hala ialah kaedah eksperimen yang menggabungkan kumpulan di pihak pengeluar dan pengguna. Percubaan dua hala mempunyai kelebihan berikut: (1) Kesan strategi baharu pada dua aspek boleh dikesan serentak, seperti perubahan dalam DAU produk dan bilangan orang yang memuat naik karya. Platform dua hala selalunya mempunyai kesan rangkaian rentas sisi Semakin ramai pembaca, semakin aktif pengarang, dan semakin aktif pengarang, semakin ramai pembaca yang akan mengikuti. (2) Limpahan kesan dan pemindahan boleh dikesan. (3) Bantu kami lebih memahami mekanisme tindakan Percubaan AB itu sendiri tidak boleh memberitahu kami hubungan antara sebab dan akibat, sahaja

Cara menapis dan mengisih data dalam pembangunan teknologi Vue Cara menapis dan mengisih data dalam pembangunan teknologi Vue Oct 09, 2023 pm 01:25 PM

Cara menapis dan mengisih data dalam pembangunan teknologi Vue Dalam pembangunan teknologi Vue, penapisan dan pengisihan data adalah fungsi yang sangat biasa dan penting. Melalui penapisan dan pengisihan data, kami boleh membuat pertanyaan dan memaparkan maklumat yang kami perlukan dengan cepat, meningkatkan pengalaman pengguna. Artikel ini akan memperkenalkan cara menapis dan mengisih data dalam Vue, dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan fungsi ini dengan lebih baik. 1. Penapisan data Penapisan data merujuk kepada penapisan data yang memenuhi keperluan berdasarkan syarat tertentu. Dalam Vue, kita boleh lulus comp

Google menggunakan AI untuk memecahkan meterai sepuluh tahun algoritma pengisihan Ia dilaksanakan bertrilion kali setiap hari, tetapi netizen mengatakan ia adalah penyelidikan yang paling tidak realistik? Google menggunakan AI untuk memecahkan meterai sepuluh tahun algoritma pengisihan Ia dilaksanakan bertrilion kali setiap hari, tetapi netizen mengatakan ia adalah penyelidikan yang paling tidak realistik? Jun 22, 2023 pm 09:18 PM

Menganjurkan |. Nuka-Cola, Chu Xingjuan Rakan-rakan yang telah mengikuti kursus asas sains komputer mestilah secara peribadi mereka bentuk algoritma pengisihan - iaitu, menggunakan kod untuk menyusun semula item dalam senarai tidak tertib dalam susunan menaik atau menurun. Ia adalah satu cabaran yang menarik, dan terdapat banyak cara yang mungkin untuk melakukannya. Banyak masa telah dilaburkan untuk memikirkan cara untuk menyelesaikan tugasan pengasingan dengan lebih cekap. Sebagai operasi asas, algoritma pengisihan dibina ke dalam perpustakaan standard kebanyakan bahasa pengaturcaraan. Terdapat banyak teknik dan algoritma pengisihan yang berbeza digunakan dalam pangkalan kod di seluruh dunia untuk menyusun sejumlah besar data dalam talian, tetapi sekurang-kurangnya setakat perpustakaan C++ yang digunakan dengan pengkompil LLVM, kod pengisihan tidak berubah dalam lebih daripada satu dekad. Baru-baru ini, pasukan Google DeepMindAI kini telah membangunkan a

Cara menggunakan algoritma isihan radix dalam C++ Cara menggunakan algoritma isihan radix dalam C++ Sep 19, 2023 pm 12:15 PM

Cara menggunakan algoritma isihan radix dalam C++ Algoritma isihan radix ialah algoritma isihan bukan perbandingan yang melengkapkan isihan dengan membahagikan elemen untuk diisih kepada set digit yang terhad. Dalam C++, kita boleh menggunakan algoritma isihan radix untuk mengisih set integer. Di bawah ini kita akan membincangkan secara terperinci cara melaksanakan algoritma isihan radix, dengan contoh kod tertentu. Idea algoritma Idea algoritma pengisihan radix adalah untuk membahagikan elemen untuk diisih ke dalam set bit digital yang terhad, dan kemudian mengisih elemen pada setiap bit secara bergilir-gilir. Pengisihan pada setiap bit selesai

Bagaimana untuk melaksanakan algoritma isihan pemilihan dalam C# Bagaimana untuk melaksanakan algoritma isihan pemilihan dalam C# Sep 20, 2023 pm 01:33 PM

Cara melaksanakan algoritma isihan pemilihan dalam Isih Pemilihan (SelectionSort) ialah algoritma pengisihan yang mudah dan intuitif. Idea asasnya ialah memilih elemen terkecil (atau terbesar) daripada unsur-unsur yang akan diisih setiap kali dan meletakkannya pada penghujung. urutan yang disusun. Ulangi proses ini sehingga semua elemen diisih. Mari ketahui lebih lanjut tentang cara melaksanakan algoritma isihan pemilihan dalam C#, bersama-sama dengan contoh kod tertentu. Mencipta kaedah isihan pemilihan Pertama, kita perlu mencipta kaedah untuk melaksanakan isihan pemilihan. Kaedah ini menerima a

Swoole Advanced: Cara menggunakan multi-threading untuk melaksanakan algoritma pengisihan berkelajuan tinggi Swoole Advanced: Cara menggunakan multi-threading untuk melaksanakan algoritma pengisihan berkelajuan tinggi Jun 14, 2023 pm 09:16 PM

Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi berdasarkan bahasa PHP Ia menyokong pelaksanaan berbilang mod IO tak segerak dan berbilang protokol rangkaian lanjutan. Berdasarkan Swoole, kita boleh menggunakan fungsi berbilang benang untuk melaksanakan operasi algoritma yang cekap, seperti algoritma pengisihan berkelajuan tinggi. Algoritma pengisihan berkelajuan tinggi (QuickSort) ialah algoritma pengisihan biasa Dengan mencari elemen penanda aras, elemen tersebut dibahagikan kepada dua urutan yang lebih kecil daripada elemen penanda aras diletakkan di sebelah kiri, dan yang lebih besar daripada atau sama dengan penanda aras elemen diletakkan di sebelah kanan Kemudian susulan kiri dan kanan diletakkan ulangan susulan

Apakah algoritma pengisihan untuk tatasusunan? Apakah algoritma pengisihan untuk tatasusunan? Jun 02, 2024 pm 10:33 PM

Algoritma pengisihan tatasusunan digunakan untuk menyusun elemen dalam susunan tertentu. Jenis algoritma biasa termasuk: Isih gelembung: menukar kedudukan dengan membandingkan elemen bersebelahan. Isih pilihan: Cari elemen terkecil dan tukarkannya ke kedudukan semasa. Isih sisipan: Sisipkan elemen satu demi satu ke kedudukan yang betul. Isih pantas: kaedah bahagi dan takluk, pilih elemen pangsi untuk membahagi tatasusunan. Isih Gabung: Bahagi dan Takluk, Isih Rekursif dan Gabungan Subarray.

Perbincangan mengenai senario aplikasi algoritma pengisihan tatasusunan PHP yang berbeza Perbincangan mengenai senario aplikasi algoritma pengisihan tatasusunan PHP yang berbeza Apr 28, 2024 am 09:39 AM

Untuk senario yang berbeza, adalah penting untuk memilih algoritma pengisihan tatasusunan PHP yang sesuai. Isih buih sesuai untuk tatasusunan berskala kecil tanpa keperluan kestabilan mempunyai kerumitan masa yang paling rendah dalam kebanyakan kes yang mempunyai kestabilan yang tinggi dan sesuai untuk senario yang memerlukan keputusan yang stabil sesuai untuk situasi tanpa keperluan kestabilan ; Isihan timbunan mencari nilai maksimum atau minimum dengan cekap. Melalui perbandingan kes sebenar, isihan pantas adalah lebih baik daripada algoritma lain dari segi kecekapan masa, tetapi isihan gabungan harus dipilih apabila kestabilan perlu dipertimbangkan.