选择排序
选择排序(SelectSort)选择排序是所有排序中最简单的排序算法之一,同时也是要求我们必须掌握的排序算法之一。
时间复杂度
选择排序的时间复杂度为(n2)
算法步骤
1.在未排序的序列中找到最小或者最大的元素,存放到排序序列的起始位置
2.再从余下的元素中继续找到最小或者最大的元素,放到以及排序好的序列末尾
3.重复第二步,知道所有的元素排序完成
算法图解
实现代码
package pra;
import java.util.Arrays;
/**
* @author: Mercury
* Date: 2022/3/12
* Time: 11:09
* Description:选择排序
* Version:1.0
*/
public class SelectSort {
public static void main(String[] args) {
int[] arrays = new int[]{1,2,3,2,5,6,2,3,7,23};
System.out.println("未进行排序的数组序列:"+Arrays.toString(arrays));
selectSort(arrays);
System.out.println("进行选择排序后的数组序列:"+Arrays.toString(arrays));
}
public static void selectSort(int[] arrays){
//外层循环控制的是需要比较的轮数
for (int i = 0; i < arrays.length-1; i++) {
//定义默认最小元素下标
int min = i;
//将默认最小元素与未排序的元素依次比较,
//当默认元素比未排序的元素大的时候,更新默认最小元素的小标
//每执行一次循环,都能找到一个当前未排序序列中最小小苏
for (int j = i+1; j < arrays.length; j++) {
if(arrays[min] > arrays[j]){
min = j;//更新默认最小元素下标
}
}
//若默认最小元素下标发生变化,则交换俩个元素
//若默认最小元素下标未发生变化,则不需要进行交换
if(min != i){
arrays[min] ^= arrays[i];
arrays[i] ^= arrays[min];
arrays[min] ^= arrays[i];
}
}
}
}