simple merge sort

 import java.util.Arrays;


public class MergeSort {


    // Merge sort function

    public static void mergeSort(int[] array, int left, int right) {

        if (left < right) {

            // Find the middle point

            int mid = (left + right) / 2;


            // Recursively sort first and second halves

            mergeSort(array, left, mid);

            mergeSort(array, mid + 1, right);


            // Merge the sorted halves

            merge(array, left, mid, right);

        }

    }


    // Merge function to merge two sorted halves

    public static void merge(int[] array, int left, int mid, int right) {

        // Sizes of two subarrays to be merged

        int n1 = mid - left + 1;

        int n2 = right - mid;


        // Temporary arrays

        int[] leftArray = new int[n1];

        int[] rightArray = new int[n2];


        // Copy data to temp arrays

        for (int i = 0; i < n1; i++) {

            leftArray[i] = array[left + i];

        }

        for (int j = 0; j < n2; j++) {

            rightArray[j] = array[mid + 1 + j];

        }


        // Merge the temp arrays back into the original array

        int i = 0, j = 0, k = left;

        while (i < n1 && j < n2) {

            if (leftArray[i] <= rightArray[j]) {

                array[k] = leftArray[i];

                i++;

            } else {

                array[k] = rightArray[j];

                j++;

            }

            k++;

        }


        // Copy any remaining elements of leftArray

        while (i < n1) {

            array[k] = leftArray[i];

            i++;

            k++;

        }


        // Copy any remaining elements of rightArray

        while (j < n2) {

            array[k] = rightArray[j];

            j++;

            k++;

        }

    }


    // Main function to test the merge sort

    public static void main(String[] args) {

        int[] array = {12, 11, 13, 5, 6, 7};


        System.out.println("Unsorted array: " + Arrays.toString(array));


        mergeSort(array, 0, array.length - 1);


        System.out.println("Sorted array: " + Arrays.toString(array));

    }

}


Comments

Popular posts from this blog

q3part b

Literal table

quicksort 1