Exploring Merge Sort with PHP

Welcome to Merge Sort

Hello, aspiring programmers! Today's topic is Merge Sort. Merge Sort is a sorting technique, much like arranging a deck of shuffled cards in order. However, for data on the Internet scale, Merge Sort outperforms your regular techniques. Today, we'll explore Merge Sort, code it in PHP, and analyze its speed. Ready? Let's get started!

What is Merge Sort?

In computer science, Merge Sort is a popular method for sorting elements. Merge Sort uses the same 'divide-and-conquer' strategy for sorting as the familiar Quick Sort algorithm. Imagine you have one long music playlist mixed up with songs. You want to sort these songs from A to Z. That's what Merge Sort does to an array.

The three steps of Merge Sort are:

  1. Split the array into halves.
  2. Sort each half separately.
  3. Merge the sorted halves back together.

Understanding the Merge Process

We will start by building a code for merging two sorted parts. The merge process makes the two halves play sort and seek. It compares elements from two halves and merges them so that the resulting list is also sorted.

Let's code a merge() function in PHP that will do just that. Note that the final variant of the merge sort function will perform every operation "in place," meaning there will not actually be two arrays; we will operate on parts of one array. With this in mind, let's implement the merge function to take just one array and treat its parts as separate arrays.

PHP
function merge(&$arr, $left, $mid, $right) {
    $n1 = $mid - $left + 1; // Find number of elements in the left array
    $Left = array(); // Define left array

    $n2 = $right - $mid; // Find number of elements in the right array
    $Right = array(); // Define right array

    // Let's fill in these arrays
    for ($i = 0; $i < $n1; $i++)
        $Left[$i] = $arr[$left + $i];
    for ($j = 0; $j < $n2; $j++)
        $Right[$j] = $arr[$mid + 1 + $j];
}

So far, we've divided our original list into two halves, Left and Right.

Merging the Halves Back Together

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal