选择排序的基本设计思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在已排序的记录序列,直到全部排完为止。
算法步骤:
初始序列:
(1)、第一趟从arr[1]开始,通过n-1次比较,从n个记录中选出关键字最小的记录,记为arr[k],交换arr[1]与arr[k]的位置。
(2)、第二趟从arr[2]开始,通过n-2次比较,从n-1个记录中选出关键字最小的记录,交换arr[2]与arr[k]
(3)、类此类推,经过n-1趟,排序完成。
算法实现:
public class SelectSort {
public static void sort(int [] arr) {
int k=0;
int temp=0;
for(int i=0;i<arr.length-1;i++) {
k=i;
for(int j=i+1;j<arr.length;j++) {
if(arr[k]>arr[j]) {
k=j;
}
}
if(k!=i) {
//交换位置
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
public static void main(String[] args) {
int [] arr= {56,62,47,21,26,76,11,39,76,18,33};
System.out.println("排序前:"+Arrays.toString(arr));
sort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
}
排序前:[56, 62, 47, 21, 26, 76, 11, 39, 76, 18, 33]
排序后:[11, 18, 21, 26, 33, 39, 47, 56, 62, 76, 76]