数组排序不能给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]+" ");
}
}
目前只能整日纠结在基础知识上,我表示现在很蛋疼!
内容涉及:第六章--数组
程序清单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]+" ");
}
}
目前只能整日纠结在基础知识上,我表示现在很蛋疼!
相关文章推荐
- 【数据结构】对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间
- 两个数组 [n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。
- 不能用字符串给字符数组赋值
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 增强for循环不能给集合或者数组赋值
- 两个数组[n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。
- 数组名是常指针,不能被赋值
- vue 数组和对象不能直接赋值情况和解决方法(推荐)
- java小程序——给数组随机赋值,查找输入的值以及冒泡和选择排序数组并输出
- 【面试编程题】巧妙排序:排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
- 《c和指针》3.1.3 二 、字符串常量 :不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 对数组排序时间复杂度要求O(n)与找中位数不能用排序
- 给定一个数组,该数组存贮R,G,B三种字符,将该数组按RGB顺序排序,不能使用辅助内存空间,且只能遍历数组一次。
- Java中解锁数组正确姿势以及赋值,foreach遍历?,Java自带的对数组排序,比较等等的静态方法总结
- JNI对数组赋值排序,创建数组并返回给Java
- 数组为什么不能用“=”互相赋值
- 先有鸡蛋还是现有鸡---Java语言程序设计(基础篇)学习日记
- 学习笔记1:不能用字符串给字符数组赋值
- 【vue.js】直接给数组赋值,vue.js不能检测到数组变化