Ivan_Bochev

Merge sort

Mar 30th, 2019 (edited)
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.15 KB | None | 0 0
  1. package kr_2;
  2.  
  3. import java.util.*;
  4.  
  5. public class Mergesort {
  6.  
  7.     public static void merge(int[] arr, int[] l, int[] r, int left, int right) {
  8.         int i = 0, j = 0, k = 0;
  9.         while (i < left && j < right) {
  10.             if (l[i] <= r[j]) {
  11.                 arr[k++] = l[i++];
  12.             } else {
  13.                 arr[k++] = r[j++];
  14.             }
  15.         }
  16.         while (i < left) {
  17.             arr[k++] = l[i++];
  18.         }
  19.         while (j < right) {
  20.             arr[k++] = r[j++];
  21.         }
  22.  
  23.     }
  24.  
  25.     public static void mergeSort(int[] a, int n) {
  26.         if (n < 2) {
  27.             return;
  28.         }
  29.         int mid = n / 2;
  30.         int[] l = new int[mid];
  31.         int[] r = new int[n - mid];
  32.  
  33.         for (int i = 0; i < mid; i++) {
  34.             l[i] = a[i];
  35.         }
  36.         for (int i = mid; i < n; i++) {
  37.             r[i - mid] = a[i];
  38.         }
  39.         mergeSort(l, mid);
  40.         mergeSort(r, n - mid);
  41.  
  42.         merge(a, l, r, mid, n - mid);
  43.     }
  44.  
  45.     public static void main(String[] args) {
  46.         Scanner sc = new Scanner(System.in);
  47.         int n = Integer.parseInt(sc.nextLine());
  48.         Random rd = new Random();
  49.         int[] arr = new int[n];
  50.         for (int i = 0; i < arr.length; i++) {
  51.             arr[i]=rd.nextInt();
  52.         }
  53.         mergeSort(arr, arr.length);
  54.         for (int i = 0; i < arr.length; i++) {
  55.             System.out.printf("Array[%d]=%d\n", i, arr[i]);
  56.         }
  57.     }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment