文章目录
代码实现性能
代码实现
public class SelectSort {
public static void main(String
[] args
) {
int[] arr
= {300, 900, -19, -10, -20};
int min
= 0;
int minIndex
= 0;
for (int i
= 0; i
< arr
.length
- 1; i
++) {
min
= arr
[i
];
for (int j
= i
+ 1; j
< arr
.length
; j
++) {
if (min
> arr
[j
]) {
min
= arr
[j
];
minIndex
= j
;
}
}
if (min
!= arr
[i
]) {
arr
[minIndex
] = arr
[i
];
arr
[i
] = min
;
}
System
.out
.println(Arrays
.toString(arr
));
}
}
}
性能
该排序算法不论什么数据进去,都需要进行两次for循环的比较,所以它的最好、最坏和平均时间复杂度都是O(n^2)
交换位置也是通过同一工具人内存进行交换,所有空间复杂度是O(1)
选择排序是不稳定的,例如{5,8,5,2,6,4},排序时第一个5会和2进行交换,从而破坏稳定性
排序发生在内存中,所以排序方式是内排序