最简单也最没用的一种算法,时间复杂度为O(n²),而且不稳定,工程中一般不用…
思想:指定一个当前最小数(一般选第一个数),记录其下标为minpos,将它与后面的每一个数依次比较,若有数小于当前最小数,则交换两者的下标,并交换两个数的位置,重复上述步骤直到排好序
平均时间复杂度:O(n²),空间复杂度:1,不稳定
public class Test {
public static void main(String[] args) {
int[] arr={2,5,6,2,1,4,3,7,6};
for(int i=0;i<arr.length-1;i++){
int minpos=i; //假定当前最小数为第一个数,定义当前下标
for(int j=i+1;j<arr.length;j++){ //从第二个数开始依次与最小数比较
if (arr[j]<arr[minpos]){
minpos=j; //若后面的数小于当前最小数,则交换二者下标
}
}
int temp=arr[i]; //将此时的最小数与原最小数交换
arr[i]=arr[minpos];
arr[minpos]=temp;
}
for(int i=0;i<arr.length;i++){ //循环打印排好序的数组
System.out.print(arr[i]+" ");
}
}
}
运行结果:
1,2,2,3,4,5,6,6,7