Javascript中的大数排序
让我知道排序数组的两个代码段之间的区别 片段1- 片段2- 我有一个文件-,代码段2可以对数据进行排序,但代码段1不能 供参考- 问题陈述- 考虑一个数字字符串数组,其中每个字符串都是一个从到位的正数。按整数值的非降序或升序对数组的元素进行排序,然后返回已排序的数组 范例 返回数组['1','3','150','200'] 功能描述 在下面的编辑器中完成bigSorting函数 bigSorting具有以下参数: 字符串未排序[n]:作为字符串的未排序整数数组 返回 字符串[n]:按数字顺序排序的数组 输入格式 第一行包含一个整数,即中的字符串数。 随后的每一行都包含一个整数字符串 约束条件 每个字符串保证表示一个正整数。 没有前导零。Javascript中的大数排序,javascript,html,algorithm,sorting,ecmascript-6,Javascript,Html,Algorithm,Sorting,Ecmascript 6,让我知道排序数组的两个代码段之间的区别 片段1- 片段2- 我有一个文件-,代码段2可以对数据进行排序,但代码段1不能 供参考- 问题陈述- 考虑一个数字字符串数组,其中每个字符串都是一个从到位的正数。按整数值的非降序或升序对数组的元素进行排序,然后返回已排序的数组 范例 返回数组['1','3','150','200'] 功能描述 在下面的编辑器中完成bigSorting函数 bigSorting具有以下参数: 字符串未排序[n]:作为字符串的未排序整数数组 返回 字符串[n]:按数字顺序排序
中所有字符串的总位数介于和之间。使用BigInt将其排序为数字:
function bigSorting(unsorted) {
return unsorted.sort((a, b) => (BigInt(a) > BigInt(b))? 0 : -1 );
}
bigSorting(unsorted).forEach(i=>console.log(i));
更新的垃圾箱:
这些数字对于javascript来说太大了。很可能第二个代码段将它们视为字符串而不是数字。@evolutionxbox是的,这很好。。但是如果a.length==b.length{返回a>b?1:-1;}如果不在此处中断,该条件如何。.bcoz在这种情况下,数字也太长了吗?文件中的数字。。。是否每行只有一个数字?如果该数字的长度为17或更多,则在进行任何比较之前,不会将这些数字进行工作转换,并尝试一下。就像evolutionxbox提到的那样,问题可能是它们被当作字符串处理。哈哈,我刚刚建议OP将它们转换为BigInt。做得很好。很棒…Lol工作解决方案链接向我报告了一个错误:TypeError:无法在Array.sort处将BigInt值转换为数字-使用Chrome@PeterB-有趣…对我来说很好。让我检查一下。在我的机器上工作!哈哈,对我来说很好@你在用什么浏览器?
function bigSorting(unsorted) {
return unsorted.sort((a, b) => {
if (a.length == b.length) {
return a > b ? 1 : -1;
}
return a.length - b.length;
});
}
function bigSorting(unsorted) {
return unsorted.sort((a, b) => (BigInt(a) > BigInt(b))? 0 : -1 );
}
bigSorting(unsorted).forEach(i=>console.log(i));