选择排序
public class SelectSort {
public static void main ( String[ ] args) {
int [ ] arr = new int [ 10 ] ;
Random random = new Random ( ) ;
for ( int i = 0 ; i < 10 ; i++ ) {
arr[ i] = random. nextInt ( 10 ) ;
}
Arrays. stream ( arr) . forEach ( System. out: : print) ;
selectSort ( arr) ;
System. out. println ( "" ) ;
Arrays. stream ( arr) . forEach ( System. out: : print) ;
}
public static void selectSort ( int [ ] arr) {
int length = arr. length;
int min;
int temp;
for ( int i = 0 ; i < length - 1 ; i++ ) {
min = i;
for ( int j = i + 1 ; j < length; j++ ) {
if ( arr[ j] < arr[ min] ) {
min = j;
}
}
if ( min != i) {
temp = arr[ i] ;
arr[ i] = arr[ min] ;
arr[ min] = temp;
}
}
}
}
性能分析
空间复杂度为O(1) 。不稳定的 ,如5,8,5,2,9这样一组数据,使用选择排序算法来排序的话,第一次找到最小元素2,与第一个5交换位置,那第一个5和中间的5顺序就变了,所以就不稳定了。最好情况时间复杂度、最坏情况和平均情况时间复杂度都为O(n^2)。