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

    技术2024-08-01  71

    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]+" "); }

    }

    目前只能整日纠结在基础知识上,我表示现在很蛋疼!

    最新回复(0)