Advertisement
Angel367

Сортировка слиянием для Арины :)

Sep 29th, 2022
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.43 KB | None | 0 0
  1.  
  2. public class MergeSortingStudentsByID {
  3.  
  4.     public static Student[] mergeSort(Student[] a, int n) {
  5.         if (n < 2) {
  6.             return a;
  7.         }
  8.         if (a == null) return null;
  9.         int mid = n / 2;
  10.         Student[] l = new Student[mid];
  11.         Student[] r = new Student[n - mid];
  12.  
  13.         for (int i = 0; i < mid; i++) {
  14.             l[i] = a[i];
  15.         }
  16.         for (int i = mid; i < n; i++) {
  17.             r[i - mid] = a[i];
  18.         }
  19.         mergeSort(l, mid);
  20.         mergeSort(r, n - mid);
  21.  
  22.         return merge(a, l, r, mid, n - mid);
  23.     }
  24.     public static Student[] mergeSort(Student[] a, Student[] b) {
  25.         int n = a.length + b.length;
  26.         Student[] c = new Student[n];
  27.         int i;
  28.         for (i = 0; i < a.length + b.length; i++)
  29.             if (i < a.length) c[i] = a[i];
  30.             else c[i] = b[i- a.length];
  31.         return mergeSort(c, n);
  32.     }
  33.     public static Student[] merge(
  34.         Student[] a, Student[] l, Student[] r, int left, int right) {
  35.  
  36.         int i = 0, j = 0, k = 0;
  37.         while (i < left && j < right) {
  38.             if (l[i].getIDNumber() <= r[j].getIDNumber()) {
  39.                 a[k++] = l[i++];
  40.             }
  41.             else {
  42.                 a[k++] = r[j++];
  43.             }
  44.         }
  45.         while (i < left) {
  46.             a[k++] = l[i++];
  47.         }
  48.         while (j < right) {
  49.             a[k++] = r[j++];
  50.         }
  51.         return a;
  52.     }
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement