selection sort
selection sort The algorithm proceeds by finding the smallest (or largest, depending on sorting order) element in the unsorted sublist, exchanging (swapping) it with the leftmost unsorted element (putting it in sorted order), and moving the sublist boundaries one element to the right. Sorted sublist == ( ) Unsorted sublist == (11, 25, 12, 22, 64) Least element in unsorted list == 11 Sorted sublist == (11) Unsorted sublist == (25, 12, 22, 64) Least element in unsorted list == 12 Sorted sublist == (11, 12) Unsorted sublist == (25, 22, 64) Least element in unsorted list == 22 Sorted sublist == (11, 12, 22) Unsorted sublist == (25, 64) Least element in unsorted list == 25 Sorted sublist == (11, 12, 22, 25) Unsorted sublist == (64) Least element in unsorted list == 64 Sorted sublist == (11, 12, 22, 25, 64) Unsorted sublist == ( ) public class SelectionSort{ public int[] selectionSort(int[] array){ // sanity check if(array == null || array.length <= 1){ return array; } for(int i = 0; i < array.length; i++){ int min = i; for(int j = i + 1; j < array.length; j++){ if(array[j] < array[i]){ min = j; } } swap(array, i, min); } return array; } private void swap(int[] array, int left, int right){ int tmp = array[left]; array[left] = array[right]; array[right] = tmp; } } public static void main(String[] args){ SelectionSort solution = new SelectionSort(); // test cases to cover all the possible situations int[] array = null; array = solution.selectionSort(array); System.out.println(Arrays.toString(array)); array = new int[0]; array = solution.selectionSort(array); System.out.println(Arrays.toString(array)); array = new int[]{4, 3, 2, 1}; array = solution.selectionSort(array); System.out.println(Arrays.toString(array)); }
posted on 2018-09-20 18:02 猪猪🐷 阅读(110) 评论(0) 收藏 举报
浙公网安备 33010602011771号