1.排序思想:
遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序
2.代码理解:
public static int[] asc2(int[] x) {
int[] ints = new int[x.length];
for (int i = 0; i < x.length; i++) {
//最小值下标为min,值为x[min]
//取出第一个下标为i的元素
int min = i;
//此部分循环代码值为挑出真正的最小值
for (int j = i + 1; j < x.length; j++) {
//与i+1之后的元素按个比较
//如果最小值大于之后的j所对应的值
if(x[min]>x[j]){
//则将最小值得索引更新为j,通过不断的比较,最后将min下标更新为最终地最小值,之后再进行第二轮循环
//将次小值挑出来,放在第二个位置
min = j;
}
}
//将已经挑出的最小值放在最前面
//外部循环从零开始,所以会依次把挑出来的最小值按顺序放入,因此是升序
ints[i] = ints[min];
}
return x;
}
3.代码修改:
public static int[] asc(int[] x) {
for (int i = 0; i < x.length; i++) {
int min = i;
//=================================
//找到数组最小值的下标,并赋值给min
for (int j = i + 1; j < x.length; j++) {
if(x[min]>x[j]){
min = j;
}
}
//+++++++++++++++++++++++++++++++++
//上面已经依次得到了最小值,所以交换顺序
//i=0,找到最小值min
//i=1,找到次小值min
//...依此顺序,等同于i跟min交换顺序:
int tmp = x[min];
x[min] = x[i];
x[i] = tmp;
}
return x;
}