假设数组 arr[]= {5,7,4,2,0,1,6},请通过选择排序的方式,实现从小到大排列:
方法:选择排序默认数组中第一位为最小值,找待排序数组当中真正的最小值;
和待排序列中的第一个进行交换,让最小值到达正确的位置。
第一轮找到最小值:
int min=arr[j];//记录最小值
int minIndex=j; //记录最小值坐标(逐步移动中)
//找真正的最小值
for(int i=j;i<arr.length;i++) {
if(arr[i]<min) {
min=arr[i];
minIndex=i;
}
}
交换:
//真正的最小值和待排序数组中的第一个进行交换
arr[minIndex]=arr[j];
arr[j]=min;
循环实现:
for(int j=0;j<arr.length;j++) {
int min=arr[j];//记录最小值
int minIndex=j; //记录最小值坐标(逐步移动中)
//找真正的最小值
for(int i=j;i<arr.length;i++) {
if(arr[i]<min) {
min=arr[i];
minIndex=i;
}
}
//真正的最小值和待排序数组中的第一个进行交换
arr[minIndex]=arr[j];
arr[j]=min;
}
完整代码:
package Java.start;
import java.util.Arrays;
public class SelectSort {
//选择排序
public static void main(String[] args) {
int[] arr= {5,7,4,2,0,1,6};
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
for(int j=0;j<arr.length;j++) {
int min=arr[j];//记录最小值
int minIndex=j; //记录最小值坐标(逐步移动中)
//找真正的最小值
for(int i=j;i<arr.length;i++) {
if(arr[i]<min) {
min=arr[i];
minIndex=i;
}
}
//真正的最小值和待排序数组中的第一个进行交换
arr[minIndex]=arr[j];
arr[j]=min;
}
}
}
结果: