1、核心思想:
选择排序将数组元素分成已排序区间和未排序区间,每次从未排序区间中找到最小的元素,将其放到已排序区间的末尾。选择排序每次找到最小的元素后只需要交换位置即可,不需要移动数组。
2、时间复杂度:O(n^2)
3、稳定性:不稳定
4、空间复杂度:O(n)
5、上代码:
public static void main(String[] args) {
int[] array = new int[]{9, 12, 1, 3, 0, 81, 5, 21};
selectSort(array);
System.out.println(Arrays.toString(array));
}
public static void selectSort(int[] array){
// 数组长度
int length = array.length;
// 循环排序数组元素
for(int i=0;i<length;i++){
// 默认当前元素为最小元素
int minLoc = i;
// 从当前元素的下一个元素开始判断
int j = i+1;
// 循环当前元素的后面元素判断最小值
for(;j<length;j++){
// 当后面元素比前一个元素还要小的时候,记录最小值的元素下标
if(array[j] < array[minLoc]){
minLoc = j;
}
}
// 当最小元素的小标和当前比对元素的下标不同时交换两个元素
if(i != minLoc){
array[i] = array[i] + array[minLoc];
array[minLoc] = array[i] - array[minLoc];
array[i] = array[i] - array[minLoc];
}
}
}
6、打印结果:
[0, 1, 3, 5, 9, 12, 21, 81]
Process finished with exit code 0
***看懂了喜欢的可以点个赞哦,后续还会出新的笔记分享,谢谢大家!
以上内容欢迎评论,欢迎指正。