每一趟从待排序的数据元素中选出最小(或最大的)一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完,选择排序是最不稳定的排序算法。
分析:
34,4,56,17,90,65
每次置换一个位置
34和4比较,4小,4再和后面的数比较,4最小放在最前面,都比完之后再
4,34,56,17,90,65 第一轮 5次
再设置34是最小的
4,17,56,34,90,65 第二轮 4次
4,17,34,56,90,65 第三轮 3次 是每一轮之后的结果
4,17,34,56,90,65 第四轮 2次(这次不用调换位置)
4,17,34,56,65,90 第五轮 1次
public class Exerse2{
public static void main(String[] args){
int[] nums={34,4,56,17,90,65};//待排序的数列
int minIndex=0;//用于记录每次比较的最小值下标
//控制轮数
for(int i=0;i<nums.length-1;i++){//n个数比较n-1次
minIndex=i;//每轮假设一个最小值下标(分别是下标为0,1,2,3,4的)
for(int j=i+1;j<nums.length;j++){//和下一个值比较
if(nums[minIndex]>nums[j]){//当前下标值大于下一个值,就换最小的下标
//标记最小下标的和之后的数进行比较
minIndex=j;
}
}
//判断需要交换的数下标是否为本身
//交换
int s=0;
if(minIndex!=i){
s=nums[minIndex];
nums[minIndex]=nums[i];
nums[i]=s;
}
}
//输出结果
for(int i:nums){
System.out.println(i);
}
}
}