//选择排序算法(详解)
// 第一趟排序:初始数据 5,2,8,4,9,1
// 最小数据 1,把1放在首位,也就是说和5互换位置
// 1,2,8,4,9,5
//
// 第二趟排序:初始数据 2,8,4,9,5
// 除去1之外,剩下里面排序
// 1,2,8,4,9,5
//
// 第二趟排序:初始数据 8,4,9,5
// 除去1,2之外,剩下里面排序
// 1,2,4,8,9,5
public void run5(){
int[] arr = {5,2,8,4,9,1};
System.out.println("交换之前");
// for(int i=0;i<arr.length;i++){
// System.out.print(arr[i]+"\t");
// }
// System.out.println();
for (int i : arr) {//作用和上方for循环一致
System.out.print(i+"\t");
}
//选择排序
//做第i趟排序
for(int i=0;i<arr.length-1;i++){
//默认一个值,是最大或者最小值
int k = i;
//选最小的记录
for(int j=k+1;j<arr.length;j++){
//1 0
if(arr[j]<arr[k]){
k = j;//记下目前找到的最小的值所在的位置
}
}
//在内层循环结束后
//也就是找到本轮循环的最小数后,在进行交换
if(i != k){
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
System.out.println();
System.out.println("交换后");
for (int i : arr) {
System.out.print(i+"\t");
}
}