我正在实现冒泡排序算法,我希望它能够接受这两个Integer和String参数.我将所有输入转换为字符串,并使用该compareTo方法将作为字符串的整数与字符串进行比较.当compareTo用于比较转换的整数时,我得到的答案不正确.我究竟做错了什么?
Integer.compareTo以数字方式对数字进行排序.这就是你想要的.
String.compareTo按字典顺序排序字符串; 也就是说,按字母顺序排列.
我记得在Windows 3.1中我的数码相机的照片文件夹是这样订购的:PHOTO1,PHOTO10,PHOTO100,PHOTO2,PHOTO20,PHOTO3,......等等.Windows XP按照您的预期对它们进行排序:PHOTO1,PHOTO2,PHOTO3,...等等,这是因为它对表示数字的字符串有特殊的排序规则.
在字典顺序中,将一个字符串A中的每个字符与另一个字符串B中的相应字符进行比较.对于两个字符串中的每个对应字符:
这里的第四点是你得到错误答案的原因,假设Eddie对你的问题的分析是正确的.
考虑字符串"10"和"2".字典顺序将分别查看每个字符的第一个字符"1"和"2".字符'1'在Java使用的字符集中位于'2'之前,因此它在"2"之前排序"10",就像"bare"在"hare"之前排序一样,因为'b'在'之前' H'.
我建议你在排序之前将字符串转换为整数.使用Integer.parseString执行此操作.
| 归档时间: |
|
| 查看次数: |
17864 次 |
| 最近记录: |