Bagaimana Menerapkan Merge Sort di C ++ dengan Contoh



Artikel ini akan memberi Anda pengetahuan rinci dan komprehensif tentang Merge Sort di C ++, cara kerjanya dengan contoh.

Apa itu jenis gabungan? Merge sort adalah algoritma pengurutan berbasis perbandingan yang termasuk dalam kategori divide and conquer. Merge sort digunakan untuk mengurutkan sebuah array berdasarkan strategi divide and conquer yang akan dibahas secara singkat pada postingan ini bersama dengan konsep lain seperti algoritmanya dengan sebuah contoh. Kami juga akan melihat kerumitan waktu dari jenis gabungan di C ++

Petunjuk berikut akan dibahas dalam artikel ini,





Pindah dengan artikel ini tentang Merge Sort in C ++

contoh pemanggilan metode jarak jauh java

Algoritma Divide and Conquer

Jika Anda sudah terbiasa dengan cara kerja quicksort, Anda mungkin mengetahui strategi bagi dan taklukkan. Divide and Conquer melibatkan tiga langkah utama. Untuk memahami langkah-langkah ini mari kita pertimbangkan array Hello [] yang memiliki indeks awal 'a' dan mengakhiri indeks 'n' sehingga kita dapat menulis array kita dengan cara berikut Halo [a & hellip..n]



Divide- Langkah utama atau langkah utama dari divide and conquer adalah membagi masalah yang diberikan menjadi sub-masalah atau sub-bagian. Tangkapannya di sini adalah bahwa sub-masalah harus serupa dengan masalah aslinya dan ukurannya lebih kecil. Dalam kasus kami, kami akan membagi array kami menjadi 2 bagian [a & hellip.m] [m + 1 & hellip..n] m terletak di tengah indeks a dan n

Conquer- Setelah kita selesai membagi masalah kita menjadi sub-masalah. Kami menyelesaikan sub-masalah ini secara rekursif.

Gabungkan- Pada langkah ini, kami menggabungkan semua solusi dari sub-masalah kami dengan cara yang tepat. Dengan kata lain, kami menggabungkan 2 larik terurut yang berbeda untuk membentuk satu larik terurut. Di sana kami memiliki array yang diurutkan.



Pindah dengan artikel ini tentang Merge Sort in C ++

Memahami Algoritma Merge Sort dengan Contoh

Pada titik ini, kita tahu pendekatan apa yang akan digunakan oleh jenis gabungan. Jadi, mari pertimbangkan sebuah contoh dan ikuti setiap langkah dari Hello [] tanpa disortir ke array yang diurutkan.
Contoh- Halo [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

servicenow tutorial untuk pemula pdf

Pada gambar di atas, kami menganggap array yang tidak diurutkan dan menggunakan merge sort untuk mendapatkan array yang diurutkan. Sekarang, mari kita lihat setiap langkah dan pahami keseluruhan algoritme

1. Pertama, kita anggap sebuah array Hello [10, 3, 7, 1, 15, 14, 9, 22] dalam array ini ada total 8 elemen

2. Seperti yang kita lihat sebelumnya merge sort menggunakan pendekatan divide and conquer untuk mengurutkan elemen. Kami menemukan m yang terletak di tengah array kami dan membagi array kami dari tengah di mana m = (a - n) / 2 'a' adalah indeks elemen paling kiri dan n adalah indeks elemen paling kanan dari array kami .

3. Setelah pembagian pertama, kita memiliki 2 bagian yang masing-masing terdiri dari 4 elemen. Mari kita lihat paruh pertama [10, 3, 7, 1].

4. Kami membagi [10, 3, 7, 1] menjadi 2 bagian [10, 3] dan [7, 1]. Setelah itu kita membaginya lagi menjadi [10], [3], [7], [1]. Pembagian selanjutnya tidak mungkin karena kita tidak dapat menghitung m. daftar yang berisi satu elemen selalu dianggap diurutkan.

5. Bagaimana penggabungan terjadi? Mari kita cari tahu. Pertama [10] dan [3] dibandingkan dan digabungkan dalam urutan menaik [3, 10] dengan cara yang sama kita mendapatkan [1, 7]

6. Setelah itu, kita bandingkan [3, 10] dan [1, 7]. Setelah dibandingkan, kami menggabungkannya dalam urutan menaik dan Kami mendapatkan [1, 3, 7, 10].

7. [15, 14, 9, 2] juga dibagi dan digabungkan dengan cara yang mirip 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 array yang diurutkanyaitu [1, 3, 7, 9, 10, 14, 15, 22].

Pindah dengan artikel ini tentang Merge Sort in C ++

Pseudocode untuk Merge Sort

Mulailah jika dibiarkan

Fungsi mergeSort () secara rekursif memanggil dirinya sendiri untuk membagi array kita hingga menjadi satu elemen dan fungsi merge () digunakan untuk menggabungkan array yang diurutkan.

Pindah dengan artikel ini tentang Merge Sort in C ++

Gabungkan program sortir di C ++

#include #include #include menggunakan namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // menggabungkan sub-array yang dibuat saat divisi void mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int Halo [ukuran], i cout<<'Enter the elements of the array one by one:n' for(i=0 i>Halo [i] mergeSort (Halo, 0, size - 1) cout<<'The Sorted List isn' for(i=0 i

Keluaran-

Pindah dengan artikel ini tentang Merge Sort in C ++

kelas anonim di java]

Kompleksitas Waktu

Kompleksitas waktu merupakan aspek penting untuk dipertimbangkan ketika kita berbicara tentang algoritma. Merge sort dianggap memiliki kompleksitas waktu yang lebih baik dibandingkan dengan algoritma pengurutan lainnya.

Waktu berjalan kasus terburuk- O (n log n)
Waktu berjalan kasus terbaik- O (n log n)
Waktu berjalan rata-rata- O (n log n)

Dengan ini, kita sampai pada akhir artikel Merge Sort in C ++ ini. Jika Anda ingin mempelajari lebih lanjut, lihat oleh Edureka, perusahaan pembelajaran online terpercaya. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk melatih Anda untuk konsep inti dan lanjutan Java bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar blog ini dan kami akan menghubungi Anda kembali secepatnya.