public class Easy {
/*简单选择排序
*注意循环的上下限的问题
*
* 主要是对内循环进行分析
* 当循环进行到i时,把i赋给min,然后进行内循环。内循环从i开始,一直到a.length-1结束。
* 接下来来是进行内循环操作,这里要找到最小值的位置min。
* 怎样才能找到最小值的位置呢?肯定要用到判断相邻两个值的大小。这里借用相邻数据大小的判断-冒泡法
* 从i开始,即把j开始等于i开始循环,等一个是a[j]与a[j]比较,循环操作执行完毕后执行j++操作。
* 内循环进行完毕。得到的是最小值的位置。但是最小值是要放在该次循环的最边。例如说,执行到i次了,
* 那么在i次执行完成后(外循环的i次执行完成后),第i个位置要放置最小值,所以有了a[i]与a[min]
* 的代码出现。
* 内循环是从后往前进行。
*/
public static void easychoose(int a[]) {
int min;
for (int i = 0; i < a.length; i++) {
min = i;
for (int j = i; j < a.length; j++) {
if (a[min] > a[j])
min = j;
}
if (i != min) {
int c = a[i];
a[i] = a[min];
a[min] = c;
}
}
}
// 测试类
public static void main(String[] args) {
int a[] = { 1, 4, 3, 5, 7, 9, 8, 6 };
easychoose(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}