Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- public class Merge {
- public static void main(String[] args) {
- Scanner Input = new Scanner(System.in);
- System.out.println("Input number of elements : ");
- //int N = Input.nextInt();
- int N = Integer.parseInt(Input.nextLine());
- int[] arr = new int[N];
- for (int i = 0; i < N; i++) {
- System.out.println("Input element "+ i +": ");
- arr[i] = Integer.parseInt(Input.nextLine());
- }
- System.out.println("BEFORE MERGE SORT : " + Arrays.toString(arr));
- MergeSort_Methods.Sort(arr,0,arr.length-1);
- System.out.println("AFTER MERGE SORT : " + Arrays.toString(arr));
- }
- }
- public class MergeSort_Methods {
- public static void Sort(int[] ARR, int l, int r) {
- if (l < r) {
- int m = (l + r) / 2; // ОПРЕДЕЛЯМЕ СРЕДНАТА ТОЧКА ЗА РАЗДЕЛЯНЕ
- Sort(ARR, l, m);// СОРТИРАМЕ ЛЕВИЯ
- Sort(ARR, m + 1, r);// СОРТИРАМЕ ДЕСНИЯ
- CompareAndMerge(ARR, l, m, r);// СЛИВАМЕ
- }
- }// end of sort
- // sort and merge
- public static void CompareAndMerge(int[] arr, int l, int m, int r) {
- //дефинираме дължината на левия и десния масив
- int LeftArrLength = m - l + 1;
- int RightArrLength = r - m;
- //дефинираме помощни масиви
- int[] L = new int[LeftArrLength];
- int[] R = new int[RightArrLength];
- for (int i = 0; i <LeftArrLength ; i++) {
- L[i] = arr[l + i];
- }
- for (int j = 0; j < RightArrLength ; j++) {
- R[j] = arr[m + 1 + j];
- }
- //сравняваме и обединяване на данните от помощните масиви
- int i = 0;//начален индекс за левия масив
- int j = 0;//начален индекс за десния масив
- int k = l;//начален индекс за обединяващия масив
- while (i < LeftArrLength && j < RightArrLength){
- if (L[i] <= R[j]){
- arr[k] = L[i];
- i++;
- }else{
- arr[k] = R[j];
- j++;
- }
- k++;
- }
- //Записване на останалите елементи(ако има такива)
- // във събитателния масив - arr
- while (i < LeftArrLength){
- arr[k] = L[i];
- i++;
- k++;
- }
- while (j < RightArrLength){
- arr[k] = R[j];
- j++;
- k++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment