MCPcopy Create free account
hub / github.com/apna-college/Alpha / MergeSort

Class MergeSort

8_DivideAndConquer/MergeSort.java:1–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1public class MergeSort {
2 //sorting method (to do step1(divide) & step2(sort parts))
3 public static void mergeSort(int arr[], int si, int ei) {
4 if(si >= ei) {
5 return;
6 }
7 int mid = si + (ei - si)/2; // or = (si + ei) / 2;
8 mergeSort(arr, si, mid);
9 mergeSort(arr, mid+1, ei);
10
11 merge(arr, si, mid, ei);
12 }
13
14 //merge method to merge the sorted parts
15 public static void merge(int arr[], int si, int mid, int ei) {
16 int temp[] = new int[ei-si+1];
17 int i = si; //idx for 1st sorted part
18 int j = mid+1; //idx for 2nd sorted part
19 int k = 0; //idx for temp;
20
21 while(i <= mid && j <= ei) {
22 if(arr[i] < arr[j]) {
23 temp[k] = arr[i];
24 i++;
25 } else {
26 temp[k] = arr[j];
27 j++;
28 }
29 k++;
30 }
31
32 //for leftover elements of 1st sorted part
33 while(i <= mid) {
34 temp[k++] = arr[i++];
35 }
36
37 //for leftover elements of 2nd sorted part
38 while(j <= ei) {
39 temp[k++] = arr[j++];
40 }
41
42 //copy temp to original array
43 for(k=0, i=si; k<temp.length; k++, i++) {
44 arr[i] = temp[k];
45 }
46 }
47
48 public static void printArr(int arr[]) {
49 for(int i=0; i<arr.length; i++) {
50 System.out.print(arr[i] +" ");
51 }
52 System.out.println();
53 }
54 public static void main(String args[]) {
55 int arr[] = {6, 3, 9, 5, 2, 8};
56 mergeSort(arr, 0, arr.length-1);
57 printArr(arr);
58 }
59}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…