我正在js中实现计数排序算法。简而言之,算法:我们有一个数字数组(int / float),我们计算相同元素的数量,然后以正确的顺序简单地输出它们。示例:数组 - 5, 2, 4, 1, 7, 3, 2, 3, 5, 9, -2, 0, 5, 2 计算:
-2: 1
0: 1
1: 1
2: 3
3: 2
4: 1
5: 3
7: 1
9: 1
和输出:-2、0、1、2、2、2、3、3、4、5、5、5、7、9
问题是在 js 中没有带键的数组这样的东西。但是有对象。
作为参数的名称,我使用需要排序的值\u200b\u200b。但是我遇到了一个问题,js非常奇怪地保留了对象参数的顺序:首先是正数从小到大,然后是负数,但是从大到小。这是一个例子:
0: 1
1: 1
2: 2
3: 1
4: 1
5: 1
-2: 1
-3: 3
-4: 1
-5: 3
我怀疑js只是将它们排序为字符串。
我知道可以使用可以从对象排序的键值元素创建一个数组数组,但这是一种额外的排序,会显着影响结果。请告诉我,是否可以默认以某种方式指定参数通常是排序的,或者是否可以以不同的方式输出它们。谢谢
更新:正数以正确的顺序显示,负数以与它们创建时相同的顺序显示。我从浏览器控制台拿了一个例子,他们在里面排序,但没有显示真正的顺序。
这样的算法会适合(如果我理解正确的话)?
请注意,使用浮点键轻松排序结果。