import com.alibaba.fastjson.JSON;
import java.util.Arrays;
import java.util.List;
//选择排序
class Scratch {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 4, 2, 7, 0, 3);
selection(list);
System.out.println(JSON.toJSONString(list));//[0,1,2,3,4,7]
}
public static List<Integer> selection(List<Integer> list) {
for (int i = 0; i <= list.size() - 2; i++) {
int minIndex = i;//假设最小值的下标是第一个值的下标
for (int j = i + 1; j <= list.size() - 1; j++) {
if (greater(list.get(minIndex), list.get(j))) {
minIndex = j;
}
}
exch(list, i, minIndex);
}
return list;
}
/**
* 比较a是否大于b的值
*
* @param a
* @param b
* @return
*/
public static boolean greater(Integer a, Integer b) {
return a > b;
}
/**
* 替换list中下标为i和下标为j的值
*
* @param list
* @param i
* @param j
*/
public static void exch(List<Integer> list, Integer i, Integer j) {
Integer temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
思路:
首先声明一个index变量记录最小值下标,假设下标为0的值是最小值,用其和其之后下标的值去比较。如果小于对方则不做任何操作继续跟下一个值比较,如果大于对方,则交换下标对应的值,继续比较 ,以此类推。
图解: