选择排序是一种比较简单的排序算法,每次都是从待排序序列中选出最小的数据元素存放在序列的起始位置,以此类推知道把数据元素全部排完。
话不多说直接上代码:
import java.util.Arrays;
/**
* 思路:在一个数组中每次找出最小的那个元素放在数组的第一个位置
* 例如:第一次就找出arr.length个元素中最小的那个元素放在arr[0]的位置
* 第二次就找出剩下的arr.length-1个元素中最小的那个元素放在arr[1]的位置,以此类推
*/
public class SelectSort {
public static void sort(int[] arr){
//对于arr.length个元素,只需循环arr.length-1次,最后一个元素放入arr[arr.length]即可
for (int i=0;i<arr.length-1;i++){
int minIndex = i; //保留当前最小值的索引
for (int j=i+1;j<arr.length;j++){
if (arr[minIndex] > arr[j]){
minIndex = j;
}
}
if (minIndex != i){
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
}
public static void main(String[] args) {
int[] array = {49, 38, 65, 97, 76, 13, 27, 50};
System.out.println("数组比较之前:" + Arrays.toString(array));
sort(array);
System.out.println("数组比较之后:" + Arrays.toString(array));
}
}
运行结果如下:
数组比较之前:[49, 38, 65, 97, 76, 13, 27, 50]
数组比较之后:[13, 27, 38, 49, 50, 65, 76, 97]
最后提醒:选择排序是一种不稳定的排序算法。例如[8,8,5]经过选择排序后左边那个8和5的位置更换了,由这个简单的例子可以看出选择排序是一种不稳定的排序算法。