Sorting

Run Settings
LanguageJava
Language Version
Run Command
import java.util.Arrays; class Main { public static void bubbleSort(int[] list){ for (int firstIndex= 0 ; firstIndex < list.length; firstIndex++ ){ for (int secondIndex= 0 ; secondIndex < list.length-1; secondIndex++){ if (list[secondIndex] > list [secondIndex+1]){ //System.out.println("first:"+firstIndex+" second:"+secondIndex); //System.out.println(""+list[firstIndex]+" >"+list[secondIndex]); int temporalHolder= list[secondIndex]; list[secondIndex]= list[secondIndex+1]; list[secondIndex+1] = temporalHolder; //printAll(list); } } } } /** * Simple implementation of selection sort * List is a list of integers * Returns exception if the list is null or empty **/ public static void selectionSort(int[] list){ if ( list == null || list.length==0){ throw new RuntimeException("The list is null or empty."); } int length = list.length; for (int placementIndex = 0; placementIndex < length; placementIndex++){ int selected= placementIndex; for (int searchingIndex = placementIndex; searchingIndex < length; searchingIndex++){ if (list[selected] > list[searchingIndex]){ selected= searchingIndex; } } swap(list, selected, placementIndex); } } /*public static void insertionSort(int[] list){ for (int index =0 ; index < list.length; index++){ int selected=index; if (list[reverseIndex-1] > list[reverseIndex]){ for (int reverseIndex = index; reverseIndex > 0 ; reverseIndex--){ swap(list, reverseIndex-1, reverseIndex); } } printAll(list); } }*/ public static int[] mergeSort(int [] array){ if (array.length == 1){ return array; } //Split Array in into rigth and left int[] left = Arrays.copyOfRange(array, 0, (array.length/2)); int[] right = Arrays.copyOfRange(array, (array.length/2), array.length); //printAll(left); //printAll(right); return merge(mergeSort(left), mergeSort(right)); } public static int[] merge(int[] array1, int [] array2){ int[] newArray = new int[array1.length+array2.length]; int newIndex=0, leftIndex=0, rightIndex=0; // printAll(array1); // printAll(array2); while (newIndex< array1.length+array2.length){ if (leftIndex < array1.length && rightIndex < array2.length){ if (array1[leftIndex] <= array2[rightIndex]){ newArray[newIndex++]= array1[leftIndex++]; } else { newArray[newIndex++]= array2[rightIndex++]; } } else if (leftIndex < array1.length){ newArray[newIndex++]= array1[leftIndex]; leftIndex++; } else if (rightIndex < array2.length){ newArray[newIndex++]= array2[rightIndex]; rightIndex++; } } //printAll(newArray); /*for (int i =0; i < array1.length; i++){ for (int j =0 ; j < array2.length;j++){ System.out.println("Comparing "+array1[i]+" "+array2[j]); if (array1[i] >= array2[j]){ newArray[index] = array2[j]; } else { newArray[index] = array1[j]; } index++; } }*/ //System.out.println("New Array"); //printAll(newArray); return newArray; } /*public int[] mergeSort(int [] array, int left, int right){ if (right-left == 1){ return array; } return merge(mergeSort(array, left, middle), mergeSort(array, middle+1, right)); }*/ // 4 5 6 7 1 2 3 // 1 4 5 6 7 2 3 // 1 2 4 5 6 7 3 // 1 2 3 4 5 6 7 // // // public static void swap(int[] list, int selected, int placementIndex){ int temporalHolder= list[selected]; list[selected] = list[placementIndex]; list[placementIndex] = temporalHolder; } public static void printAll(int[] list){ System.out.println(" "); for (int index = 0; index < list.length; index++){ System.out.print(list[index]+" "); } } /* const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]; function quickSort(array, left, right) { } function partition(array, pivot, left, right) { } function swap(array, firstIndex, secondIndex) { } //Select first and last index as 2nd and 3rd parameters quickSort(numbers, 0, numbers.length - 1); console.log(numbers); */ public static void quicksort(int[] array, int left, int right){ if (array.length == 1){ return; } partition(array, (right-left)/2, left, right); } public static void partition(int[] array, int pivot, int left, int right){ System.out.println("left:"+left+" Pivot: "+pivot+" right:"+right); if (pivot - left <= 0 || right - pivot <= 0 ){ System.out.println("Returning..."); return; } int pointer = left; while (pointer < pivot ){ if (array[pointer]> array[pivot]){ swap(array, pointer, pivot-1); swap(array,pivot-1, pivot--); } else { pointer++; } } partition(array, (pivot - left)/2, left, pivot); partition(array, (right - pivot)/2, pivot, right); } public static void main(String[] args) { int [] list = new int[]{10,9,8,7,6,5,4,3,2,1}; printAll(list); //int[] sortedArray=mergeSort(list); quicksort(list, 0, list.length-1); printAll(list); } }
Editor Settings
Theme
Key bindings
Full width
Lines