- Author 杨叔
- 选择排序: 3 1 6 2 5
- 算法:
先在原数组中找出最小的元素,然后这个最小的元素和最前面的元素交换位置,以此类推,便完成了排序
思路如下:
/*
原数据:
3 1 6 2 5
找出原数组中最小的一个元素(1),与原数组中最左边的元素(3)互换位置
1 3 6 2 5
第一次循环结束
此时最左边的元素一定是最小的,所以在下次循环时无需再管最左边的元素
3 6 2 5
找出原数组中最小的一个元素(2),与原数组中最左边的元素(3)互换位置
2 6 3 5
第二次循环结束
6 3 5
找出原数组中最小的一个元素(3),与原数组中最左边的元素(6)互换位置
3 6 5
第三次循环结束
6 5
找出原数组中最小的一个元素(5),与原数组中最左边的元素(6)互换位置
5 6
第四次循环结束
*/
第一次循环,下标是从0开始
第二次循环,下标是从1开始
第三次循环,下标是从2开始
第四次循环,下标是从3开始
如有不解之处,还需各位看官细细思考琢磨
public class SelectSort {
public static void main(String[] args) {
int[] a={3,1,6,2,5};
//使用选择排序
for (int i=0;i<a.length-1;i++){
//假设第一个元素就是最小值
//记录最小值元素的下标
int min=i;
for (int j=i+1;j<a.length;j++) {
if (a[min] > a[j]) {
//给min重新赋值
min = j;
}
}
//考虑交换位置
if ( min!=i){
int temp;
temp=a[i];
a[i]=a[min ];
a[min]=temp;
}
}
for (int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}