1.原理:
选择排序原理是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序。
2.思路:
int tmp = i #假设i为最少数的索引
i=0 第一轮:将第一位元素与该元素后面的元素(2,3,...len-1)进行相比较,找到本轮最小的数,记下该数的位置(即在数组中的下标)并赋给tmp(tmp为最小值的索引),通过一次交换即可将本轮最小的数交换到位
i=1 第二轮 :将第二位元素与该元素后面的元素(3,4,...len-1)进行相比较,找到本轮最小的数,记下该数的位置(即在数组中的下标)并赋给tmp(tmp为最小值的索引),通过一次交换即可将本轮最小的数交换到位
依次循环,直到结束。
3.代码如下:
import java.util.SortedSet;
public class test_xuanze {
public static void main(String[] args) {
// StringBuffer sb= new StringBuffer();
int[] before = { 10, 10, 24, 34, 9, 99, 15, 6, 55, 0, 1, 1, };
xuanze(before);
}
public static int[] xuanze(int[] before) {
int before_len = before.length;
if (before_len <= 1) {
return before;
}
for (int i = 0; i < before_len; i++) {
//记录最小数的索引
int tmp = i;
for (int j = i + 1; j < before_len; j++) {
if (before[tmp] > before[j]) {
tmp = j;//这轮结束,tmp为最小的索引
}
}
if (tmp != i) {
//交换当前索引 i 和最小值索引 tmp两处的值
int k = before[i];
before[i] = before[tmp];
before[tmp] = k;
}
}
for (int i = 0; i < before_len; i++) {
System.out.print(before[i] + "、");
}
return before;
}
}