applying meerge sort on strings

 import java.util.*;


public class practice {
    public static String[] mergesort(String arr[], int si, int ei) {
        int mid = si + (ei - si) / 2;
        if (si == ei) {
            String[] A = { arr[si] };
            return A;
        }
        String[] arr1 = mergesort(arr, si, mid);
        String[] arr2 = mergesort(arr, mid + 1, ei);
        String[] arr3 = merge(arr1, arr2);
        return arr3;
    }

    public static String[] merge(String arr1[], String arr2[]) {
        int m = arr1.length;
        int n = arr2.length;
        String[] arr3 = new String[m + n];
        int idx = 0;
        int i = 0;
        int j = 0;
        while (i < m && j < n) {
            if (isAlphabeticallySmaller(arr1[i], arr2[j])) {
                arr3[idx] = arr1[i];
                i++;
                idx++;
            } else {
                arr3[idx] = arr2[j];
                j++;
                idx++;
            }
        }
        while (i < m) {
            arr3[idx] = arr1[i];
            i++;
            idx++;
        }
        while (j < n) {
            arr3[idx] = arr2[j];
            j++;
            idx++;
        }
        return arr3;
    }

    static boolean isAlphabeticallySmaller(String str1, String str2) {
        if (str1.compareTo(str2) < 0) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        String[] arr = { "sun", "earth", "mars", "mercury", "jupiter" };
        String[] a = mergesort(arr, 0, arr.length - 1);
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
}

Comments