您的位置:首页 > 编程语言 > Java开发

数组排序不能给max乱赋值,Java语言程序设计(基础篇)学习日记

2011-02-03 22:39 302 查看
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]+" ");
}

}

目前只能整日纠结在基础知识上,我表示现在很蛋疼!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐