Apakah jenis penggabungan? Merge sort adalah algoritma penyortiran berasaskan perbandingan yang tergolong dalam kategori divide and winer. Penggabungan penggabungan digunakan untuk menyusun susunan berdasarkan strategi pembahagi dan penaklukan yang akan dibahas secara ringkas dalam catatan ini bersama dengan konsep lain seperti algoritma dengan contoh. Kami juga akan melihat kerumitan masa penggabungan dalam C ++
Petunjuk berikut akan dibahas dalam artikel ini,
- Membahagi dan Menaklukkan Algoritma
- Memahami Algoritma urut gabungan dengan contoh
- Pseudocode untuk Gabungan Susun
- Program dalam C ++ untuk Merge Sort
- Kerumitan masa untuk Merge Sort
Teruskan dengan artikel ini mengenai Merge Sort di C ++
Membahagi dan mengalahkan algoritma
Sekiranya anda sudah mengetahui cara kerja quicksort, anda mungkin menyedari strategi perpecahan dan penaklukan. Divide and Conquer melibatkan tiga langkah utama. Untuk memahami langkah-langkah ini mari kita pertimbangkan array Hello [] mempunyai indeks permulaan 'a' dan indeks akhir 'n' oleh itu kita boleh menulis susunan kami dengan cara berikut Hello [a & hellip..n]
Divide- Langkah utama atau langkah utama membelah dan menaklukkan adalah membahagikan masalah yang diberikan kepada sub-masalah atau sub-bahagian. Hasil tangkapan di sini adalah bahawa sub-masalahnya harus sama dengan masalah asal dan ukurannya lebih kecil. Dalam kes kami, kami akan membahagikan susunan kami kepada 2 bahagian [a & hellip.m] [m + 1 & hellip..n] m terletak di tengah-tengah indeks a dan n
Conquer- Setelah kita selesai membahagikan masalah kita kepada sub-masalah. Kami menyelesaikan masalah ini secara berulang.
Gabungkan- Dalam langkah ini, kami menggabungkan semua penyelesaian sub-masalah kami dengan cara yang sesuai. Dengan kata lain, kami menggabungkan 2 susunan yang disusun berbeza untuk membentuk satu susunan yang disusun. Di sana kami mempunyai susunan yang disusun.
Teruskan dengan artikel ini mengenai Merge Sort di C ++
Memahami Algoritma Gabungan Susun dengan Contoh
Pada ketika ini, kita tahu pendekatan apa yang akan digunakan oleh penggabungan. Oleh itu, mari kita pertimbangkan satu contoh dan ikuti setiap langkah dari Hello [] tanpa disusun ke susunan yang disusun.
Contoh- Helo [10, 3, 7, 1, 15, 14, 9, 22]
system.exit (0) boleh digunakan untuk menghentikan program.
Dalam gambar di atas, kami menganggap susunan yang tidak disusun dan menggunakan penggabungan jenis untuk mendapatkan susunan yang disusun. Sekarang, mari lihat setiap langkah dan fahami keseluruhan algoritma
1. Pertama, kami menganggap array Hello [10, 3, 7, 1, 15, 14, 9, 22] dalam array ini terdapat 8 elemen
2. Seperti yang kita saksikan penggabungan sebelumnya menggunakan kaedah membahagi dan menakluk untuk menyusun elemen. Kami menjumpai m yang terletak di tengah-tengah array kami dan membahagi susunan kami dari tengah di mana m = (a - n) / 2 'a' adalah indeks elemen paling kiri dan n adalah indeks elemen paling kanan array kami .
3. Selepas pembahagian pertama, kita mempunyai 2 bahagian yang masing-masing terdiri daripada 4 elemen. Mari lihat babak pertama [10, 3, 7, 1].
4. Kami membahagikan [10, 3, 7, 1] dalam 2 bahagian [10, 3] dan [7, 1]. Selepas itu kami membahagikannya lebih jauh kepada [10], [3], [7], [1]. Pembahagian lebih jauh tidak mungkin kerana kita tidak dapat mengira m. senarai yang mengandungi unsur tunggal selalu dianggap disusun.
5. Bagaimana penggabungan berlaku? Mari kita cari. Pertama [10] dan [3] dibandingkan dan digabungkan dalam urutan menaik [3, 10] dengan cara yang sama kita mendapat [1, 7]
java menukar dari double ke int
6. Selepas itu, kita membandingkan [3, 10] dan [1, 7]. Setelah dibandingkan, kami menggabungkannya dalam urutan menaik dan Kami mendapat [1, 3, 7, 10].
7. [15, 14, 9, 2] juga dibahagi dan digabungkan dengan cara yang serupa untuk membentuk [9, 14, 15, 22].
8. Pada langkah terakhir kita membandingkan dan menggabungkan [15, 14, 9, 2] [9, 14, 15, 22] untuk memberi kita susunan yang disusuniaitu [1, 3, 7, 9, 10, 14, 15, 22].
perbezaan antara siswazah dan sarjana
Teruskan dengan artikel ini mengenai Merge Sort di C ++
Pseudocode untuk Gabungan Susun
Mulakan jika dibiarkanFungsi mergeSort () secara berulang memanggil dirinya untuk membahagi susunan kita sehingga menjadi satu elemen dan fungsi bergabung () digunakan untuk menggabungkan tatasusunan yang disusun.
Teruskan dengan artikel ini mengenai Merge Sort di C ++
Gabungkan program atur di C ++
#include #include #include menggunakan namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // menggabungkan sub-array yang dibuat sementara pembahagian void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindex)size int Hello [size], saya cout<<'Enter the elements of the array one by one:n' for(i=0 i>Hello [i] mergeSort (Hello, 0, size - 1) cout<<'The Sorted List isn' for(i=0 i Pengeluaran-
Teruskan dengan artikel ini mengenai Merge Sort di C ++
Kerumitan Masa
Kerumitan masa adalah aspek penting yang harus dipertimbangkan ketika kita membincangkan algoritma. Penggabungan penggabungan dianggap mempunyai kerumitan masa yang hebat berbanding dengan algoritma penyortiran lain.
Masa berjalan terburuk- O (n log n)
Masa berjalan kes terbaik- O (n log n)
Purata masa berjalan- O (n log n)Dengan ini, kita akan mengakhiri artikel Penggabungan dalam C ++ ini. Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.
Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.