一、基本概念
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换),
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

二、算法特点
是否稳定: false
平均时间复杂度:O(n^2)
最差时间复杂度:O(n^2)
最优时间复杂度:O(n^2)
package com.jiafuwei.java;
/**
* java 选择排序
* @author jfw
*
*/
public class SelectionSort {
public static void main(String[] args) {
int [] collections = {36,23,56,789,342,456,34,7,234,4578,32};
SelectionSort selectionSort = new SelectionSort();
selectionSort.sort(collections);
for (int i = 0; i < collections.length; i++) {
System.out.print(collections[i]+" ");
}
}
public void sort(int [] data) {
for(int k=0;k<data.length;k++){
int min = k;
//先把这一圈循环中的第一个数和后面的数进行比较 如果大于后面的数 然后把后面数的下标值记录下来
//注意 这里i=k 是从k后面开始循环
for(int i=k;i<data.length;i++){
if(data[min]>data[i]){
min = i;
}
}
//把这一圈循环中的一个数记录下来
int temp = data[k];
//把这一圈循环中的一个数变成最小的数
data[k] = data[min];
//把以前最小数的位置 改变为当时的第一个数
data[min] = temp;
}
}
}
来源:https://www.cnblogs.com/jiafuwei/p/6025931.html