一.简介
依次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起/始位置
二.实现
package com.vincent;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception{
int[] arr = new int[32];
for(int i=0;i<arr.length;i++){
arr[i] = (int)(Math.random() * 100);
}
System.out.println(Arrays.toString(arr));
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int arr[]){
//每一轮可以找到一个最小/大值,故对于n个数需要n-1轮
for(int i=0;i<arr.length-1;i++){
//记录最小值索引
int min = i;
for(int j=i+1;j<arr.length;j++){
if(arr[min] > arr[j]){
min = j;
}
}
//把每次比较的最小值从头部排列
if(min != i){
int tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
}
}
效果:
三.总结
选择排序时间复杂度:O(n^2)