[选择排序]简单选择排序
1.算法思想:
- 按数组顺序依次选定一个元素作为比较值,遍历数组,找出最小值,与比较值交换
2.流程分析:
直接上例子:int[] array = {3, 2, 10, 4, 8, 5, 7, 9, 6, 1}
- 以 array[0] = 3 作为比较值,记录下标minIdx = 0
- 遍历array[1]~array[9],与3比较
- array[1]=2<3,然后更新minIdx = 1
- array[9]=1<2,更新minIdx = 9
- 交换array[9]、array[0]的值
- 以此类推,以array[1]作为比较值,遍历数组,找出最小下标,交换array[min]、array[1]的值。
3.动态排序图
4.代码演示
public static void selectionSort(int[] array){
for (int i = 0; i < array.length; i++) {
//以i作为最小数下标
int minIdx = i;
for (int j = i + 1; j < array.length; j++) {
if(array[j] < array[minIdx ]){
//记录最小数下标
minId = j;
}
}
//将找出的最小数与当前数交换值
int temp = array[i];
array[i] = array[minIdx];
array[minIdx] = temp;
}
}
总结:理解≠学会,一定要打断点,debug逐步调试,手动敲一遍代码!!!