版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39776901/article/details/81387387
假定现在有一个整型数组{23,4,56,166,2},对它进行从小到大选择排序
要找最小值,首先在下标为0-4这5个数中找到最小值,与第一位交换,再从下标为1-4这四个数中找到最小值,与第二位交换,再从下标为2-4这三个数中找到最小值,与第三位交换,在从下标为3-4这两个数中找到最小值,与第四位交换,整个数组就排好序了
第一次,找到最小值2,与第一位交换,数组变为:2,4,56,166,23
第二次,找到最小值4,与第二位交换,数组变为:2,4,56,166,23(没有变)
第三次,找到最小值23,与第三位交换,数组变为:2,4,23,166,54
第四次,找到最小值54,与第四位交换,数组变为:2,4,23,54,166
排序完成
代码实现:
public class SelectSort {
public static void selectSort(int[] arr) {
for(int i = 0;i < arr.length - 1;i++) {
int index = i;// 记录当前位置
for(int j = i + 1;j < arr.length;j++) {
//找到最小值,用index记录下标
if(arr[index] > arr[j]) {
index = j;
}
}
swap(arr,index,i);
}
}
public static void swap(int[] arr,int a,int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static void main(String[] args) {
int[] arr = {12,3,45,5,9};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
}