首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。时间复杂度为O(n^2)
package zc;
/**
* JAVA实现选择排序
* 时间复杂度O(n^2)
* 空间复杂度O(1)
* @author D
*
*/
public class selectSort {
public static void main(String[] args) {
int arr[]= {1,6,9,3,4,7,6,3,10,32,65,12,98};
sort(arr);
StringBuilder str=new StringBuilder(); //为了练习StringBuilder类
str.append("[");
for(int i=0;i<arr.length;i++) {
str.append(arr[i]+",");
}
str.setCharAt(str.length()-1, ']');
System.out.println(str); //打印排序后的数组
}
public static void sort(int arr[]) {
if(arr.length<2) { //数组元素个数小于2,无需进行排序
return;
}
for(int i=0;i<arr.length-1;i++) {
int index=i;
for(int j=i;j<arr.length;j++) {
if(arr[index]>arr[j]) {
index=j; //把最小的值的索引给k
}
}
if(index!=i) { //找到最小值的索引k,交换位置
int temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
}
}
}