实现一个方法,该方法的参数是int[],该方法可以对数组进行排序,例如使用【选择排序】,该方法不需要返回值。
2 1 4 9 8 5 3
规则:每一轮在待排序的区域中比较找到一个最小值后,把这个最小值放到已经排好顺序的区域的末尾,剩下的部分成一个新的待排序部分,重复上面的步骤直到排序结束。
2 1 4 9 8 5 3
第一轮从待排序区中找到一个最小值,然后和第一个位置的数字交互位置
1 2 4 9 8 5 3
第二轮从新的待排序区中找到一个最小值,然后和第二个位置的数字交互位置
1 2 4 9 8 5 3
第三轮从新的待排序区中找到一个最小值,然后和第三个位置的数字交互位置
1 2 3 9 8 5 4
第四轮从新的待排序区中找到一个最小值,然后和第四个位置的数字交互位置
1 2 3 4 8 5 9
第五轮从新的待排序区中找到一个最小值,然后和第五个位置的数字交互位置
1 2 3 4 5 8 9
第六轮从新的待排序区中找到一个最小值,然后和第六个位置的数字交互位置
1 2 3 4 5 8 9
注意,操作的核心目标:
1.每轮找到的最小值应该存放的下标位置是什么
2.每轮找到的最小值现在的下标位置是什么
3.找到之后,让这俩个位置的值进行交互就可以了
package com.briup.day1;
import java.util.Arrays;
/**
*
* @author Xuan
* */
public class Selection {
//1 2 5 4
public static void main(String[] args) {
int [] a ={1,15,2,3,5,9,8};
for(int i=0;i<a.length-1;i++) {
int min = i;//刚进入循环时把数组第一位默认为最小值下标
int temp;
for(int j=min;j<a.length;j++) {
//从最小值下标开始依次比较取到最小值
//并记录最小值的下标
if(a[j]<a[min]) {
min=j;
}
}
if(i!=min) { //进行交换最小值下标后,如果彼此下标不相等就交换数字
temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
System.out.println(Arrays.toString(a));
}
}