Merge Sort Program di Java: Perbedaan Antara Merge Sort & Quicksort

Diterbitkan: 2021-05-25

Daftar isi

Pengantar Program Merge Sort di JAVA

Seperti namanya, program merge sort di JAVA adalah algoritma sorting. Ini telah dikonseptualisasikan secara klasik sebagai algoritma bagi dan taklukkan di JAVA. Program merge sort di Java bekerja dengan secara rekursif memecah array input menjadi dua atau lebih sub-masalah penyusunnya sampai ini cukup sederhana untuk diselesaikan secara langsung.

Sub-masalah konstituen dapat serupa atau agak terkait dengan masalah induk. Solusi individu untuk setiap sub-masalah kemudian digabungkan untuk mencapai solusi untuk masalah induk asli.

Bagaimana Cara Kerja Program Merge Sort di Java?

Seperti yang telah dijelaskan sebelumnya, program merge sort di JAVA adalah algoritma bagi dan taklukkan. Ini adalah pengurutan yang stabil yang berarti bahwa elemen array mempertahankan posisi aslinya relatif satu sama lain selama proses penyortiran.

  • Membagi: Pada langkah ini, array input dibagi menjadi dua bagian penyusunnya. Langkah ini terus diulang untuk semua setengah larik yang dihasilkan sampai tidak ada lagi setengah larik untuk dibagi lebih lanjut.
  • Conquer: Pada langkah ini, array yang dibagi diurutkan dan digabungkan dari bawah ke atas untuk mencapai array terakhir yang diurutkan.

Perbedaan Antara Program Quicksort dan Merge Sort di Java

Meskipun secara fungsional serupa, penekanan yang tepat harus diletakkan pada perbedaan mendasar antara quicksort dan mergesort di JAVA.

  • Mekanisme : Quicksort adalah algoritme pengurutan internal, di tempat, sedangkan mergesort adalah algoritme pengurutan eksternal dan tidak pada tempatnya. Dalam quicksort, elemen diurutkan berdasarkan elemen kunci yang dikenal sebagai pivot. Pivot umumnya merupakan nilai tengah dalam array input. Elemen dengan nilai lebih rendah dari pivot didorong ke sisi kiri pivot, sedangkan elemen dengan nilai lebih besar ke sisi kanan pivot. Di sini, sisi kiri disebut sebagai partisi kiri, dan sisi kanan disebut sebagai partisi kanan. Sebaliknya, mergesort membagi array menjadi dua sub-array (n/2) berulang kali hingga hanya tersisa satu elemen. Kemudian menggabungkan sub-array untuk membentuk array yang diurutkan.
  • Aplikasi: Quicksort cocok untuk array kecil, mergesort bekerja dengan array apa pun, berapa pun ukurannya.
  • Kecepatan : Dalam kasus quicksort, semakin kecil dataset, semakin cepat algoritmanya. Mergesort, di sisi lain, bekerja pada kecepatan yang konsisten untuk semua kumpulan data.
  • Kebutuhan ruang dan penggunaan memori: Seperti disebutkan sebelumnya, mergesort adalah algoritme pengurutan eksternal dan tidak pada tempatnya. Kompleksitas ruangnya adalah O (n). Oleh karena itu, diperlukan penyimpanan tambahan sebesar (O(n)) untuk mengurutkan array bantu.

Baca Juga : Jenis-Jenis Literal di Java beserta Contohnya

Analisis Kompleksitas Waktu dari Program Merge Sort di JAVA

Program merge sort di JAVA memiliki kompleksitas waktu O (n*log n). Menurut Pencarian Biner, setiap kali sebuah angka dibagi menjadi setengah di setiap langkah, itu dapat diwakili oleh fungsi logaritmik 'log n'. Jumlah langkah (paling banyak) dapat diwakili oleh log n +1. Bagian tengah dari setiap sub-array adalah O (1).

Jadi, untuk menggabungkan sub-array, waktu berjalan O (n) akan diperlukan. Oleh karena itu, total waktu untuk program merge sort di JAVA menjadi n (log n +1). Ini sama dengan kompleksitas waktu O (n*log n) dalam ketiga kasus (terburuk, rata-rata dan terbaik) karena jenis gabungan selalu membutuhkan waktu linier untuk menggabungkan dua bagian.

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Menyimpulkan

Sama seperti data yang diurutkan untuk manusia secara logis terdengar dan lebih mudah dipahami, array yang diurutkan lebih mudah dikelola untuk digunakan oleh komputer. Di sinilah program sortir gabungan di JAVA terbukti menguntungkan. Ini adalah algoritma pengurutan berbasis perbandingan yang efisien, tujuan umum.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, pengembangan perangkat lunak full-stack, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Full-stack yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9+ proyek, dan penugasan, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa yang dimaksud dengan pengurutan dalam pemrograman?

Sorting adalah teknik menempatkan objek dalam urutan tertentu. Ini biasanya dilakukan untuk membuatnya lebih mudah dikelola, atau untuk membuatnya lebih mudah diakses. Dalam ilmu komputer, kami memiliki algoritma pengurutan untuk struktur data. Algoritma pengurutan ini dapat dibagi menjadi dua kategori. Salah satunya adalah algoritma pengurutan berbasis perbandingan dan yang lainnya adalah algoritma pengurutan berbasis penyisipan. Dalam algoritma pengurutan berbasis perbandingan, suatu elemen dibandingkan dengan elemen lain untuk menemukan kunci pengurutan yang cocok, yang merupakan satu-satunya kunci yang umum di antara mereka. Dalam algoritma pengurutan berbasis penyisipan, elemen baru ditambahkan ke depan array dan elemen yang ditempatkan di akhir digeser ke awal.

Apa saja jenis algoritma pengurutan dalam pemrograman?

Algoritma pengurutan sebagian besar diklasifikasikan menjadi 3 jenis: pengurutan sekuensial, pengurutan paralel, pengurutan partisi. Penyortiran berurutan paling mudah dipahami. Ini adalah salah satu yang kami gunakan ketika kami menyortir di kepala kami. Semuanya diurutkan dari yang terkecil hingga terbesar. Algoritma pengurutan sekuensial yang paling umum adalah pengurutan penyisipan, pengurutan gelembung, pengurutan cepat, dan pengurutan gabungan. Semua algoritma pengurutan ini dapat dengan mudah diparalelkan. Dalam kasus penyortiran paralel, setiap tugas bergantung pada hasil tugas sebelumnya. Jadi, urutan output tidak dijamin. Dua algoritma sorting paralel yang digunakan adalah topological sort dan bottom-up mergesort. Algoritma pengurutan partisi mencoba untuk mempartisi array input sehingga setiap subarray dapat diurutkan secara individual. Algoritma pengurutan partisi termasuk pencarian biner, chaining, heap sort, dan radix sort.

Apa perbedaan antara merge sort dan quick sort?

Merge sort adalah algoritma bagi dan taklukkan. Ini membagi daftar menjadi dua partisi berdasarkan beberapa item pivot, mengurutkan setiap partisi secara rekursif dan kemudian menggabungkan hasilnya. Langkah merge bisa dilakukan dengan parallel merge sort. Penyortiran cepat adalah algoritma pengurutan O(nlogn). Ini adalah algoritma yang jauh lebih sederhana, tetapi harus berputar pada elemen array acak setiap kali.