sort()整数、浮点数未按大小排序问题

一个js一维整数数组的排序代码如下:

	var arr = [1, 3, 5, 2, 5];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1
	//1: 2
	//2: 3
	//3: 5
	//4: 5

而当数组的当整数部分位数不一致时,出现问题的,比如:

	var arr = [1, 30, 5, 2, 5];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1
	//1: 2
	//2: 30
	//3: 5
	//4: 5

同样的当数组为一维浮点数时,当整数部分位数一致时,是没有问题的,比如:

	var arr = [1.12, 1.35, 1.01, 1.26, 1.18];
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 1.01
	//1: 1.12
	//2: 1.18
	//3: 1.26
	//4: 1.35

而整数部分位数不一致时,也会出现以下问题。比如:

	var arr = [10.12, 9.23, 10.01, 20.26, 10.18];
	//var arr = ['10.12', '9.23', '10.01', '20.26', '10.18']; //结果一致
	console.log(arr.sort());
	//输出结果如下:
	//Array(5)
	//0: 10.01
	//1: 10.12
	//2: 10.18
	//3: 20.26
	//4: 9.23

这个问题的应当来自于sort()函数的内部机制,这里暂时不去考虑。针对数字排序的问题,采用自定义排序解决,代码如下(一维整数同理可以解决,不再赘述):

	var arr = [10.12, 9.23, 10.01, 20.26, 10.18];
	console.log(arr.sort(function(a,b){return a-b}));
	//输出结果如下:
	//Array(5)
	//0: 9.23
	//1: 10.01
	//2: 10.12
	//3: 10.18
	//4: 20.26

arr.sort()中function(a,b){}方法,其中a、b为数组arr中的任意两个值,方法中return返回值大于0正序排列,小于0倒序排列
*等于0,不为纯数字等问题暂不考虑
至此,解决sort()整数、浮点数未按大小排序问题。欢迎大家对此提出自己的看法,本文会持续更新。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将浮点数整数一起排序,您可以使用自定义的比较器来实现。以下是一个示例代码: ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String[] args) { ArrayList<Number> list = new ArrayList<>(); // 输入5个整数 System.out.println("请输入5个整数:"); for (int i = 0; i < 5; i++) { int num = Integer.parseInt(System.console().readLine()); list.add(num); } // 输入5个double类型的数 System.out.println("请输入5个double类型的数:"); for (int i = 0; i < 5; i++) { double num = Double.parseDouble(System.console().readLine()); list.add(num); } // 调用排序方法 sort(list); // 打印排序后的结果 System.out.println("排序后的列表:"); for (Number num : list) { System.out.println(num); } } public static void sort(ArrayList<Number> list) { Collections.sort(list, new Comparator<Number>() { @Override public int compare(Number num1, Number num2) { if (num1.doubleValue() < num2.doubleValue()) { return -1; } else if (num1.doubleValue() > num2.doubleValue()) { return 1; } else { return 0; } } }); } } ``` 这段代码中,我们使用了一个自定义的比较器来比较两个数字的大小。它首先将数字转换为double值,然后进行比较。通过这种方式,您可以将整数浮点数一起排序,并按照升序排列。请按照提示输入整数和double类型的数,然后程序将会对它们进行排序,并输出排序后的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值