【发布时间】:2021-04-16 12:50:04
【问题描述】:
我想问一下冒泡排序(Java)
这是我的代码
Object[] bubbled = {"LMAO", 3.48 ,2.3 ,3.61 ,3.16 ,3.56 ,2.9 ,3.99 ,4.87 ,3.91};
for(int pass=1 ; pass<bubbled.length-1;pass++){
for(int i=1;i<bubbled.length-1-pass;i++){
if(Double.parseDouble(String.valueOf(bubbled[i]))>
Double.parseDouble(String.valueOf(bubbled[i+1]))){
float hold= Float.parseFloat(String.valueOf(bubbled[i]));
bubbled[i] = bubbled[i+1];
bubbled[i+1] = hold;
}
}
}
数组是Object[] 类型。我希望它从bubbled[1] 开始,因为bubbled[0] 是非数字值。
它会在流程结束时进行排序,但不会对我的最后 3 个索引进行排序。
例如:
之前:3.48 ,2.3 ,3.61 ,3.16 ,3.56 ,2.9 ,3.99 ,4.87 ,3.91
之后:2.3 ,2.9 ,3.16,3.48 ,3.56, 3.61 ,3.99, 4.87 ,3.91
谁能指出问题所在?
【问题讨论】:
-
在我看来,这是一个学习使用调试器的好机会。你试过了吗?
-
不要转换成字符串再转换成双精度来比较数值:检查它们是否是数值(使用例如
instanceof Number),然后转换成对到Number并使用.doubleValue()进行比较。除此之外,您还可以通过使用float来存储hold值来更改此处的值。
标签: java arrays sorting bubble-sort