First commit
This commit is contained in:
130
src/ArraySorting.java
Normal file
130
src/ArraySorting.java
Normal file
@@ -0,0 +1,130 @@
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
|
||||
public class ArraySorting {
|
||||
public static void main(String[] args) {
|
||||
Random rand = new Random();
|
||||
int[] numbers = new int[100000000];
|
||||
|
||||
for(int i = 0; i < numbers.length; i++) {
|
||||
numbers[i] = rand.nextInt(10000);
|
||||
}
|
||||
|
||||
System.out.println("Before: ");
|
||||
|
||||
|
||||
// mergeSort(numbers, 0, numbers.length - 1);
|
||||
// selectionSort(numbers);
|
||||
// bubbleSort(numbers);
|
||||
// Arrays.sort(numbers);
|
||||
// insertionSort(numbers, 4, 8);
|
||||
System.out.println("After: ");
|
||||
}
|
||||
|
||||
public static void quickSort(int[] numbers) {
|
||||
|
||||
}
|
||||
|
||||
/* MERGE SORT ALGORITHM */
|
||||
|
||||
public static void mergeSort(int[] array, int left, int right) {
|
||||
if(left < right) {
|
||||
int mid = (left+right) / 2; // Find the middle element
|
||||
mergeSort(array, left, mid); // Sort the first half
|
||||
mergeSort(array, mid + 1, right); // Sort the second half
|
||||
merge(array, left, mid, right); // Merge the sorted halves
|
||||
}
|
||||
}
|
||||
public static void merge(int[] array, int left, int mid, int right) {
|
||||
// Find sizes of two subarrays to be merged
|
||||
int n1 = mid - left + 1;
|
||||
int n2 = right - mid;
|
||||
|
||||
// Create Temp Arrays
|
||||
int[] leftTemp = new int[n1];
|
||||
int[] rightTemp = new int[n2];
|
||||
|
||||
// Copy Data to Temp Arrays
|
||||
for(int i = 0; i < n1; i++) {
|
||||
leftTemp[i] = array[left + i];
|
||||
}
|
||||
|
||||
for(int j = 0; j < n2; j++) {
|
||||
rightTemp[j] = array[mid + 1 + j];
|
||||
}
|
||||
|
||||
// Merge the temp arrays
|
||||
// Initial index of merged subarray array
|
||||
int i = 0, j = 0, k = left;
|
||||
|
||||
while (i < n1 && j < n2) {
|
||||
if (leftTemp[i] <= rightTemp[j]) {
|
||||
array[k] = leftTemp[i];
|
||||
i++;
|
||||
} else {
|
||||
array[k] = rightTemp[j];
|
||||
j++;
|
||||
}
|
||||
|
||||
k++;
|
||||
}
|
||||
|
||||
// Copy remaining elements of leftTemp if any
|
||||
while (i < n1) {
|
||||
array[k] = leftTemp[i];
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
|
||||
// Copy remaining elements of rightTemp if any
|
||||
while (j < n2) {
|
||||
array[k] = rightTemp[j];
|
||||
j++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
||||
/* END: MERGE SORT ALGORITHM */
|
||||
|
||||
private static void selectionSort(int[] numbers) {
|
||||
for(int i = 0; i < numbers.length - 1; i++) {
|
||||
int smallest = i;
|
||||
// Find the smallest element in unsorted array
|
||||
for(int j = i + 1; j < numbers.length; j++) {
|
||||
if(numbers[j] < numbers[smallest]) {
|
||||
smallest = j;
|
||||
}
|
||||
}
|
||||
// Swap the smallest element with the first element
|
||||
int temp = numbers[smallest];
|
||||
numbers[smallest] = numbers[i];
|
||||
numbers[i] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
private static void bubbleSort(int[] numbers) {
|
||||
int temp;
|
||||
for( int i = 0; i < numbers.length; i++) {
|
||||
for(int j = 0; j < numbers.length - 1; j++) {
|
||||
if (numbers[j] > numbers[j + 1]) {
|
||||
temp = numbers[j];
|
||||
numbers[j] = numbers[j + 1];
|
||||
numbers[j + 1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void insertionSort(int[] numbers, int start, int end) {
|
||||
int temp;
|
||||
for (int i = start; i < end; i++) {
|
||||
for (int j = i; j > start; j--) {
|
||||
if (numbers[j] < numbers[j - 1]) {
|
||||
temp = numbers[j];
|
||||
numbers[j] = numbers[j - 1];
|
||||
numbers[j - 1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user