排序——选择排序
选择排序
两次循环,大小循环,大循环来控制需要交换的位置,
小循环寻找未排序的序列中的最小值的位置,记录位置,然后与大循环记录的位置进行交换。
public class SelectSort { public void selectSort(Integer[] arrays){ if(arrays.length == 0 || arrays == null) return; int len = arrays.length; for(int i = 0; i < len - 1; i++){ int min = i; for(int j = i + 1; j < len; j++){ if(arrays[min] > arrays[j]) { min = j; } } if(min != i) swap(arrays, min, i); } } }
同样存在会多排序的次数
4 2 1 6 3 6 0 -5 1 1
-5 2 1 6 3 6 0 4 1 1
-5 0 1 6 3 6 2 4 1 1
-5 0 1 6 3 6 2 4 1 1
-5 0 1 1 3 6 2 4 6 1
-5 0 1 1 1 6 2 4 6 3
-5 0 1 1 1 2 6 4 6 3
-5 0 1 1 1 2 3 4 6 6
-5 0 1 1 1 2 3 4 6 6
-5 0 1 1 1 2 3 4 6 6(多余的)