Advertisement
mr1302

Untitled

Oct 1st, 2021
932
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Random;
  5.  
  6. public class Main {
  7.  
  8.     public static void merge(Comparable[] a, int p, int q, int r) {
  9.         int n1 = q - p + 1;
  10.         int n2 = r - q;
  11.         Comparable[] L = new Comparable[n1 + 1];
  12.         Comparable[] R = new Comparable[n2 + 1];
  13.         for (int i = 1; i <= n1; ++i) {
  14.             L[i - 1] = a[p + i - 1];
  15.         }
  16.         for (int j = 1; j <= n2; j++) {
  17.             R[j - 1] = a[q + j];
  18.         }
  19.         for (int i = 0, j = 0, k = p; k <= r; ++k) {
  20.             if (i < n1 && j < n2) {
  21.                 if (L[i].compareTo(R[j]) <= 0) {
  22.                     a[k] = L[i];
  23.                     i++;
  24.                 }
  25.                 else {
  26.                     a[k] = R[j];
  27.                     j++;
  28.                 }
  29.             }
  30.             else if (i < n1) {
  31.                 a[k] = L[i];
  32.                 i++;
  33.             }
  34.             else {
  35.                 a[k] = R[j];
  36.                 j++;
  37.             }
  38.         }
  39.     }
  40.     public static void mergeSort(Comparable[] a, int p, int r) {
  41.         int q;
  42.         if (p < r) {
  43.             q = (p + r) / 2;
  44.             mergeSort(a, p, q);
  45.             mergeSort(a, q + 1, r);
  46.             merge(a, p, q, r);
  47.         }
  48.     }
  49.     public static Student[] mergeTwoStudentArrays(Student[] a, Student[] b) {
  50.         Student[] res = new Student[a.length + b.length];
  51.         System.arraycopy(a, 0, res, 0, a.length);
  52.         System.arraycopy(b, 0, res, a.length, b.length);
  53.         merge(res, 0, a.length - 1, res.length - 1);
  54.         return res;
  55.     }
  56.     public static void main(String[] args) {
  57.         Random random = new Random();
  58.         Student[] students1 = new Student[20];
  59.         for(int i = 0; i < 20; ++i){
  60.             String name = "";
  61.             for(int j = 0; j < 5; ++j)
  62.                 name += (char)(random.nextInt(26) + 97);
  63.             students1[i] = new Student(random.nextInt(100), name);
  64.             System.out.println(students1[i]);
  65.         }
  66.         System.out.println();
  67.         Student[] students2 = new Student[13];
  68.         for(int i = 0; i < 13; ++i){
  69.             String name = "";
  70.             for(int j = 0; j < 7; ++j)
  71.                 name += (char)(random.nextInt(26) + 97);
  72.             students2[i] = new Student(random.nextInt(100), name);
  73.             System.out.println(students2[i]);
  74.         }
  75.         mergeSort(students1, 0, students1.length - 1);
  76.         mergeSort(students2, 0, students2.length - 1);
  77.         Student[] students = mergeTwoStudentArrays(students1, students2);
  78.         System.out.println();
  79.         for(int i = 0; i < students1.length + students2.length; ++i){
  80.             System.out.println(i + " " + students[i]);
  81.         }
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement