package com.yang.sort;
/**
* 选择排序:先给第一元素标记为最小值位置,然后与其后面的元素依次比较,如果小于标记的元素,
* 就将标记改为当前元素的位置,然后交换两个元素的位置(此时数组中最小值到了数组的首位置)
* ,然后再将后面的数组看作一个新的数组,重复前面的操作即可。
* 时间复杂度:O(n^2),不稳定
*/
public class SelectSort {
public static void main(String[] args) {
int[] a={1,5,2,7,3,9,8,4,6};
System.out.println("排序前的数组:");
printArrays(a);
for(int i=0;i<a.length-1;i++){
int minPos=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<=a[minPos])
minPos=j;
}
swap(a,i,minPos);
}
System.out.println();
System.out.println("排序后的数组:");
printArrays(a);
}
// 打印数组
public static void printArrays(int[] args){
for(int i=0;i<args.length;i++){
System.out.print(args[i]+" ");
}
}
// 交换两个数的值
public static void swap(int[] a,int i,int j){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
03-03
446
01-19
1566