1、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。
例如:{55,27,25,44,22}
初始:{55,27,25,44,22}
第一次:先将数组中第一个55数作为一个整体,然后从{27,25,44,22}剩下的数中找出最小的 22,最后与55交换位置。
得到:{22,27,25,44,55}
第二次:将数组中的第二个27数作为一个整体,将它之后的{25,44,55}这些数中找出最小的 25,最后与27交换位置。
得到:{22,25,27,44,55}
以此类推
代码:
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int arr[]={5,1,2,8,55,45};
for (int i=0;i<arr.length-1;i++){
int min=arr[i];//假定最小值是第一个
int minindex=i;
for (int j=i+1;j<arr.length;j++){
if(min>arr[j]){//说明假定的最小值不是最小值
min=arr[j];//重置最小值
minindex=j;//重置最小值的索引
}
}
//如果最小值就是一开始定的,即不用换位置,如果最小值发生了变化,就将最小值放到前面
if (minindex!=i){
arr[minindex]=arr[i];//先把原本假定的最小值换到真正的最小值位置上
arr[i]=min;//然后把找到的真正的最小值换到原本假定的最小值的位置上
}
System.out.println("第"+(i+1)+"轮后");
System.out.println(Arrays.toString(arr));
}
}
}