算法原理
在未排序的数列中找出最大(或最小)的元素,然后将其存入到已排序的数列起始位置,紧接着在剩余的未排序数列中继续查找最大(或最小)的元素,并将其放入到已排序的数列末尾,依次类推,直至未排序的数列中没有元素。
算法图解
算法实现
java
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++;
}
}
}
测试
java
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");
}
}