Untitled
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