Untitled

 avatar
unknown
plain_text
a month ago
2.2 kB
5
Indexable
package mergesort;
import java.util.Random;
import java.util.Scanner;
public class mergesort {
    int n;
    int a[]; 
    mergesort(int x) {
        n = x;
        a = new int[n];
    }
    void generate() {
        System.out.println("Generating n random numbers..");
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            a[i] = r.nextInt(20);
            System.out.print(a[i] + " ");
        }
    }
    void merge(int low, int mid, int high) {
        int h, i, j, k;
        int[] b = new int[n];
        h = low;
        i = low;
        j = mid + 1;
        while ((h <= mid) && (j <= high)) {
            if (a[h] <= a[j]) {
                b[i] = a[h];
                h++;
            } else {
                b[i] = a[j];
                j++;
            }

            i++;
        }
        if (h > mid) {
            for (k = j; k <= high; k++) {
                b[i] = a[k];
                i++;
            }
        } else {
            for (k = h; k <= mid; k++) {
                b[i] = a[k];
                i++;
            }
        }
        for (k = low; k <= high; k++) {
            a[k] = b[k];
        }
    }
    void mergesort(int low, int high) {
        if (low < high) {
            int mid = (low + high) / 2;
            mergesort(low, mid);
            mergesort(mid + 1, high);
            merge(low, mid, high);
        }
    }
    void display() {

        for (int i = 0; i < n; i++) {
            System.out.print(a[i] + " ");
        }
    }
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number of elements:");
        int x = s.nextInt();
        mergesort m = new mergesort(x);
        m.generate();
        long start_time = System.currentTimeMillis();
        m.mergesort(0, m.n - 1);
        long end_time = System.currentTimeMillis();
        System.out.println("\nThe sorted array is:");
        m.display();
        System.out.println("\nTime taken = " + (end_time - start_time) + " Milli seconds");
        s.close();
    }
}
Editor is loading...
Leave a Comment