一:基本思想
就是讲指定排序位置与其他数组元素进行相比,满足条件就交换元素,注意这里与冒泡排序(看我上一篇文章)的区别,不是交换相邻的元素,而是把满足条件的元素与指定的元素交换位置,这样排序好的位置逐渐扩大,最后整个数组都成为已经拍好序的格式
例如:坤坤小学生,从包含数字1~10的乱序的数字堆中分别选择合适的数字,组成一个1到10的排序,而坤坤首先从数字堆中选出1,放在第一位,然后选择出2放在第二位,以此类推,直到找到数字9放在数字8后面,最后的10就不用选择了。
与冒泡排序的区就是交换的次数少了,速度会快很多。
二:算法实例
每一趟从待排序的数据元素中选出最小的,顺序的放在已经排好的数列位置上。直到全部排完。
三:算法的实现
package study;
public class SelectSort {
public static void main(String[] args) {
int array[]={56,54,23,52,6,24};//创建一个数组,该数组是乱序的
//创建对象
SelectSort sorter=new SelectSort();
//使用对象调动用排序的方法
sorter.sort(array);
}
private void sort(int[] array) {
int index;
for(int i=1;i<array.length;i++){
index=0;
for(int j=0;j<array.length-i;j++){
if(array[j]>array[index]){
index=j;
}
}
//交换在位置array。length-i和index上的两个数
int temp=array[array.length -i]; //将第一个元素放置临时变量中
array[array.length -i]=array[index];//将第二个元素放置第一个元素中
array[index]=temp;//将临时变量就是第一个元素变量放置第三个中
}
showArray(array);//输出
}
private void showArray(int[] array) {
for(int i:array){ //遍历数组
System.out.print(" < "+i); //输出每一个数组元素值
}
System.out.println();
}
}
``
结果如下: