标签:... 最小值 循环 for 开始 选择 class 就是 dem
上实例
package demoarr;
//选择排序
/**
* 我开始以为要循环取最小值,那不是直接就可以排序了吗,还用那么麻烦吗
* 重点是最小值与循环到的位置的互换,保证了排在前面的最小后面的不重复
* @author chengwei
*
*/
public class ChooseSorting {
public static void main(String[] args) {
int[] arr= {3,2,9,7,6,8,1,13,76,34};
int temp;//中间值
for(int i=0;i<arr.length;i++) {
int k=i;//为了不改变i,但能通过arr[k]改变arr[i]的值,实现arr[i]与arr[j]的比较
for(int j=arr.length-1;j>i;j--) {
if(arr[j]<arr[k]) {
k=j;//k值改变以后,arr[k]值也会改变,也就是if条件会改变
}
}
//最小值与arr[i]的互换,i是一直递增的,还是i前面数组的顺序已定,排后面的
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
/*
* i=0: k=0; 当j=6;(arr[6]=1)<(arr[k]=3) k=6 j--....
* 当j=5;(arr[5]=8)<(arr[k]=1)不成立,这时k=6,arr[k]已不同
* temp=arr[i]=3;arr[i]=arr[k]=arr[6]=1;arr[k]=arr[6]=3;
* 数组变为{1,2,9,7,6,8,3,13,76,34};
*/
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
注意到 if(arr[j]<arr[k]) {k=j;}里面的if里的判断条件会随着if语句执行结果改变
标签:... 最小值 循环 for 开始 选择 class 就是 dem
原文地址:https://www.cnblogs.com/dreamcheng/p/9650326.html