Java语言程序设计(基础篇)
内容涉及:第六章--数组
程序清单6-8的selectionSort方法,当时没看书,自己敲得代码,没想到敲出个错误:max=0
package java06;
public class SelectionSort { public static void main(String[] args){ printArray(selectionSort(new double[]{-2,-3,-1}));//测试句 System.out.println();//空行 printArray(selectionSort(new double[]{2,1,4})); }
public static double[] selectionSort(double[] list){ for(int i=list.length-1;i>=1;i--){//递减的需要比较排列的队列// double max=0;//这是一个bug,
//输出结果是
//-3.0 0.0 0.0 //1.0 2.0 4.0
//max和min不能用0之类的东西赋值,3个负数就没法和max(0)比了。所以需要修改成数组里一个看得见摸得着的数,现在我选用list[0],不知妥当否。。。。。。
double max=list[0];//改成了这个(后来发现,其实书上原题就是这个) int indexOfMax=0; for(int j=0;j<=i;j++){//把当前行的最大值找出 if(max<list[j]){ max=list[j]; indexOfMax=j; } } //把具有最大值的数组元素和最后一个交换值 list[indexOfMax]=list[i];
list[i]=max; } } return list; } public static void printArray(double[] list){ for(int i=0;i<list.length;i++) System.out.print(list[i]+" "); }
}
目前只能整日纠结在基础知识上,我表示现在很蛋疼!