### Merge Sort Implementation in JAVA

Merge Sort  is a technique of sorting data with below steps:-

1) Divide the data recursively until it can not  divide more.

2)  Compare the data and sort it.

3) Merge the data again .

```/*
* Merge Sort is based on the concept below points:-
* 1) Divide array until it can not be divide.
* 2) Merge it again in sorted pattern
*
*
*/

public class MergeSort {

public static int[]  mergeSort(int arr[])
{

//check for size if it is one then already sorted
int size=arr.length;
if(size==1)
{
return arr;
}

//find middle (divide an array into two half)
int mid=size/2;

//first half
int[] fhalf=new int[mid];
//second half
int[] shalf=new int[size-mid];

// Copy first half of the array
for (int i = 0; i < mid; i++)
{ fhalf[i] = arr[i];
}
// Copy second half of the array
for (int i = mid; i < size; i++)
{ shalf[i - mid] = arr[i];
}

//recursive call fhalf and shalf
return merge(mergeSort(fhalf), mergeSort(shalf));

}

public static int[] merge(int[] firstHalfSorted,int[] secondHalfSorted)
{
// First, create a new array to store the answer.

int SortedArray[] = new int[firstHalfSorted.length + secondHalfSorted.length];

int m = 0;
int n = 0;
int count = 0;

System.out.println("first array");
printArray(firstHalfSorted);
System.out.println("second array");
printArray(secondHalfSorted);
//compare the elements in both arary
while (m<firstHalfSorted.length && n<secondHalfSorted.length)
{
if (firstHalfSorted[m]>secondHalfSorted[n])
{
SortedArray[count]=secondHalfSorted[n];
count++;
n++;
}
else if (firstHalfSorted[m]<secondHalfSorted[n])
{
SortedArray[count]=firstHalfSorted[m];
count++;
m++;
}
}

//append the remaining elements at the end
if (m!=firstHalfSorted.length)
{
while(m<firstHalfSorted.length){
SortedArray[count]=firstHalfSorted[m];
count++;
m++;
}
}

//append the remaining elements at the end
if (n!=secondHalfSorted.length)
{
while(n<secondHalfSorted.length){
SortedArray[count]=secondHalfSorted[n];
count++;
n++;
}
}
System.out.println("sorted array");
printArray(SortedArray);
// At last return the sorted array
return SortedArray;
}

public static void printArray(int[] arr)
{
//System.out.println("printing array");
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println(" ");
}

public static void main(String[] args)
{
int arr[]={14,33,27,10,25,19,40,45};
printArray(arr);
//calling merge function
arr=mergeSort(arr);
printArray(arr);
}

}
```

Implementation Steps:-

```14 33 27 10 25 19 40 45
first array
14
second array
33
sorted array
14 33
first array
27
second array
10
sorted array
10 27
first array
14 33
second array
10 27
sorted array
10 14 27 33
first array
25
second array
19
sorted array
19 25
first array
40
second array
45
sorted array
40 45
first array
19 25
second array
40 45
sorted array
19 25 40 45
first array
10 14 27 33
second array
19 25 40 45
sorted array
10 14 19 25 27 33 40 45
10 14 19 25 27 33 40 45
```

### 5 books that your college doesn’t tell to read seriously for PLACEMENTS

1.Let us C - It can be the best book to pick in your first semester itself. The book is written in a very simple style so you can easily grasp most of the concepts of programming by just working hard on it. It will help you in building basics of programming around c language.

2.HEAD FIRST JAVA-This book you should buy in third semester and invest your whole second year into it by working on all the codes. This book will help you teaching the concepts in a very attractive way. You will never bore while working  through this book.

3.Data Structure Made Easy In Java - As soon you finished studying core java in the 4th semester just pick this book to understand the logic’s of data structure and algorithms. It will help you to go deep inside this subject from which questions are frequently asked in all the interviews. This book carries a great set of problems that will help in developing intellectual knowledge around algorithms.

4.Cracking The Coding Interview – This book you should start pra…

### Bubble Sort in JAVA

What is bubble sort?

It is a sorting technique that is based on the comparison.Here we compare adjacent element, if the first element is larger than the second we swap each other. We do the same procedure again and again until array do not sort completely.

Example:-
5 1 4 2 8

51428here pass is nothing but iterating the loops equal to number of elements in the array but if it already sorted before then we can break the loop anddo existPASS1 case0 1 //check 0 and first element15428 case1 2 //check 1 and 2 element14528 case2 314258 case3 414258 swap istruePASS2 //first pass completed now do second pass case0 114258 case1 212458 case2 312458 case3 412458 swap istrue PASS3 // third pass case0 112458 case1 212458 case2 312458 case3 412458 swap isfalse since swap is false we break from the loop and do not go for fourth and fifth pass
Program:-

package sorting;publicclassBubbleSort{//function to print arraypublicstaticvoidprint(int[] arr){for(int i=0;i<=arr.length-1;i++) Syst…