原理
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
参考代码
public static void main(String[] args) {
//用于测试的数据
int[] array= {5,8,3,4,1,18,11};
//进行选择排序
selectionSort(array);
}
//交换
public static void swapElement(int[] array,int i,int j) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
// 找到最小的下标
public static int indexLowest(int[] array,int start) {
//假设一开始的数是最小的
int lowIndex=start;
//开始循环
for(int i=start;i<array.length;i++) {
//如果找到了更小的,则交换下标
if(array[i]<array[lowIndex]) {
lowIndex=i;
}
}
//返回最小下标
return lowIndex;
}
//进行循环调用
public static void selectionSort(int[] array) {
for(int i=0;i<array.length;i++) {
int j=indexLowest(array, i);
swapElement(array, i, j);
}
//进行输出
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
其实原理就是这样的,看着是非常简单的,但是是不是意味着选择排序这个算法非常简单呢,不是的,对于初学者来说,懂得基本的原理,然后用自己熟悉的语言写出一个简单的代码就可以入门了,当然后面想要把算法精通、熟练,还需要加大练习,如果想要深入的话,可能还需要更加高级的数学知识,所以我这个例子只是抛砖引玉而已。
要想了解更多,可以关注公众号:编程新手,我们一起交流,一起学习,一起进步