1:概念
循环待排序区间找到最大的数并且和待排序的区间中一个数字(实现从大到小排序)或者最后一个数字(实现从小到大排序)交换位置。
不难发现“选择排序”和“冒泡排序”的区别就是“选择排序”循环的过程中只交换一次位置。而“冒泡排序”相邻两个数有大小出现就会交换位置。
2:观察每次排序的效果
如下图所示每次循环都会找到最大的数如果当前位置不是最大数就会交换位置直到循环结束
3:代码示例
public static void main(String[] args){
/**
*选择排序: 待排序
*/
int[] toSort={12,342,1,56,8,789,3,5,999,33,88};
System.out.print("排序前结果:");
printTosort(toSort);
System.out.println();
for(int i=0;i<toSort.length-1;i++){
int max=i;
for(int j=i+1;j<toSort.length;j++){
if(toSort[j]>toSort[max]){
max=j;
}
}
if(toSort[i]<toSort[max]){
int tmp=toSort[i];
toSort[i]=toSort[max];
toSort[max]=tmp;
}
System.out.println();
System.out.print("第【"+(i+1)+"】次排序的结果:");
printTosort(toSort);
System.out.println();
}
System.out.println();
System.out.print("排序后结果:");
printTosort(toSort);
}
private static void printTosort(int[] toSort) {
for(int i=0;i<toSort.length;i++){
System.out.print(toSort[i]+" ");
}
}
希望对看到文章的小伙伴有所帮助。