
package org.code2care.java.sorting.algo;
import java.util.Arrays;
public class MergeSortJavaExample {
public static void main(String[] args) {
//Unsorted Array
int[] unsortedArray = {4, 99, 2, 11, 34, 67, 54, 12, 45, 245, 234, 12, 200};
MergeSortJavaExample mergeSort = new MergeSortJavaExample();
int[] sortedArray = mergeSort.mergeSortAlgorithm(unsortedArray);
System.out.println(Arrays.toString(sortedArray));
}
public int[] mergeSortAlgorithm(int[] arrayOfNumbers) {
int arrayLength = arrayOfNumbers.length;
if (arrayLength == 1) {
return arrayOfNumbers;
}
//Divide the array into two halves
int midIndex = arrayLength / 2;
int[] leftArray = Arrays.copyOfRange(arrayOfNumbers, 0, midIndex);
int[] rightArray = Arrays.copyOfRange(arrayOfNumbers, midIndex, arrayLength);
leftArray = mergeSortAlgorithm(leftArray);
rightArray = mergeSortAlgorithm(rightArray);
return mergeArrays(leftArray, rightArray);
}
public int[] mergeArrays(int[] leftArray, int[] rightArray) {
int leftLength = leftArray.length;
int rightLength = rightArray.length;
int[] mergedArray = new int[leftLength + rightLength];
int leftIndex = 0, rightIndex = 0, mergedIndex = 0;
while (leftIndex < leftLength && rightIndex < rightLength) {
if (leftArray[leftIndex] <= rightArray[rightIndex]) {
mergedArray[mergedIndex] = leftArray[leftIndex];
leftIndex++;
} else {
mergedArray[mergedIndex] = rightArray[rightIndex];
rightIndex++;
}
mergedIndex++;
}
while (leftIndex < leftLength) {
mergedArray[mergedIndex] = leftArray[leftIndex];
leftIndex++;
mergedIndex++;
}
while (rightIndex < rightLength) {
mergedArray[mergedIndex] = rightArray[rightIndex];
rightIndex++;
mergedIndex++;
}
return mergedArray;
}
}
Output:
Time Complexity | |||||
---|---|---|---|---|---|
Best Case | Average Case | Worst Case | Space Complexity | ||
Merge Sort | Ω(n log n) | Θ(n log n) | O(n log n) | O(n) |
Have Questions? Post them here!
- Create a Zip file using Java Code programmatically
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- How to Sort a LinkedList in Java
- Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver
- How to declare and initialize Array in Java Programming
- [Fix] java: integer number too large compilation error
- Java JDBC Connection with MySQL Driver in VS Code + Troubleshooting
- Reading .xls and .xlsx Excel file using Apache POI Java Library
- IntelliJ: Error: Could not find or load main class, java.lang.ClassNotFoundException
- How to get Client IP address using Java Code Example
- Truncate table using Java JDBC Example
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- How to get file path in Idea IntelliJ IDE
- Java Generics explained with simple definition and examples
- Java SE 8 Update 301 available with various bug fixes and security improvements
- Java: Collect Stream as ArrayList or LinkedList
- Java JDBC Connection with PostgreSQL Driver Example
- How to check if Java main thread is alive
- How to fix Java nio NoSuchFileException wile reading a file
- Java 8+ get Day of the Week Examples with LocalDateTime, DateTime, ZonalDateTime and Instant classes
- Ways to Convert Integer or int to Long in Java
- [Java] How to throws Exception using Functional Interface and Lambda code
- [Fix] Spring Boot: mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- Java: The value of the local variable string is not used
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement
- Add Line Break in Microsoft Excel Cell on Mac (macOS) - MacOS
- [fix] Cannot connect to the Docker daemon at unix:var/run/docker.sock. Is the docker daemon running? - Docker
- Fix: Amazon Linux bash: sudo: command not found - AWS
- JDK Location in Android Studio - Android-Studio
- How to use SCP Command to Copy Directory - Linux
- Eclipse : Workspace was written with an older version of the product and will be updated - Eclipse
- Java JDBC Delete a Record in Database Table using PreparedStatement - Java
- Spotify is down for iOS and Android globally - error no internet connection available, something went wrong - News