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; } } } } }