选择排序代码:
public class SelectionSortAlgorithm {public static void selectionSort(int[] arr){//如果数组为null,或者数组为空或只有一个元素if (arr == null || arr.length < 2){return;}for (int start = 0; start < arr.length; start ++){int minValueIndex = start;for (int j = start + 1; j < arr.length; j ++){minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;}swap(arr, minValueIndex, start);}}//互换位置,将最小的数置前public static void swap(int[] arr, int minValueIndex, int start){int temp = arr[start];arr[start] = arr[minValueIndex];arr[minValueIndex] = temp;}public static void printArr(int[] arr){for (int i=0; i < arr.length ; i++){System.out.print(arr[i] + " ");}System.out.println();}public static void main(String[] args) {int[] arr = {7, 2, 3, 8, 4, 1, 6, 1, 9};//排序前打印一次printArr(arr);//排序selectionSort(arr);//排序后打印一次printArr(arr);}}
主要代码部分是
for (int start = 0; start < arr.length; start ++){int minValueIndex = start;for (int j = start + 1; j < arr.length; j ++){minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;}swap(arr, minValueIndex, start);}
主要排序的思路是:每次将最小(大)的值放置在start开始位置,然后这次的start位置就排好了,不需要改动了。下一次就是从上一次start+1的下标处开始。
