Dek*_*kel 4 javascript arrays sorting
Array.prototype.sort 就地对数组的元素进行排序并返回排序后的数组。
来自的要求compareFunction(a, b)是:
<0以放置a之前b0以保持a和b(相对于彼此)的原始位置>0以放置b之前a。由于每个浏览器提供商可能会以不同的方式实现排序算法,我的问题是:是否可以提供一个compareFunction会导致sort函数在尝试对元素进行排序时进入无限循环的方法?
如果是这样 - 如果可能的话 - 它是否会被视为实现中的错误,或者如果compareFunction没有遵循上述说明 - 可以得到意想不到的结果吗?
要清楚 - 我不是问是否可以
while (true);在compareFunction.
不。
正确的排序算法(快速排序、归并排序、Tim 排序、冒泡排序等)总是在每次迭代中取得进展,因此不会出现像这样的无限循环。虽然可以设计一个函数来攻击特定排序实现的性能,但这不会阻止算法的终止。
可以想像,有可能是一个“自定义”类型的实现可能的方式,其中不稳定的比较功能(使呼叫功能无效,结果不可预测),可能会“挂”,这简直就是在排序执行工作严重缺陷被写入; 我对浏览器中使用的广泛使用和经过彻底审查的排序实现的作者/贡献者给予了更多的信任。