算法原理
在未排序的数列中找出最大(或最小)的元素,然后将其存入到已排序的数列起始位置,紧接着在剩余的未排序数列中继续查找最大(或最小)的元素,并将其放入到已排序的数列末尾,依次类推,直至未排序的数列中没有元素。
算法图解
算法实现
public class SelectionSort {public void sort(int arr[]){int startIndex = 0;while (startIndex < arr.length-1){int minValue = arr[startIndex];int minIndex = startIndex;for(int i=startIndex+1;i<arr.length;i++){if(minValue > arr[i]){minValue = arr[i];minIndex = i;}}if(startIndex != minIndex){int temp = arr[minIndex];arr[minIndex] = arr[startIndex];arr[startIndex]=temp;}startIndex++;}}
}
测试
public static void main(String[] args) {int arr[] = {9,7,1991,27,-1,-10,0,2,65,-100};SelectionSort selectionSort = new SelectionSort();selectionSort.sort(arr);for(int i = 0;i<arr.length;i++){System.out.print(arr[i]+"\t");}}